mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice
synced 2025-12-27 15:45:54 +00:00
When encoding a frame, red_worker passes an allocated buffer to libjpeg where it should encode the frame. When it fails, a new bigger buffer is allocated and the encoding is restarted from scratch. However, it's possible to use libjpeg to realloc this buffer if it gets too small during the encoding process. Make use of this feature, especially since it will make it easier to encore one line at a time instead of a full frame in subsequent commits.
36 lines
1.2 KiB
C
36 lines
1.2 KiB
C
/* -*- Mode: C; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
/*
|
|
Copyright (C) 2009 Red Hat, Inc.
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Lesser General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2.1 of the License, or (at your option) any later version.
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Lesser General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef _H_MJPEG_ENCODER
|
|
#define _H_MJPEG_ENCODER
|
|
|
|
#include "red_common.h"
|
|
|
|
typedef struct MJpegEncoder MJpegEncoder;
|
|
|
|
MJpegEncoder *mjpeg_encoder_new(int width, int height);
|
|
void mjpeg_encoder_destroy(MJpegEncoder *encoder);
|
|
|
|
uint8_t *mjpeg_encoder_get_frame(MJpegEncoder *encoder);
|
|
size_t mjpeg_encoder_get_frame_stride(MJpegEncoder *encoder);
|
|
int mjpeg_encoder_encode_frame(MJpegEncoder *encoder,
|
|
uint8_t **buffer, size_t *buffer_len);
|
|
|
|
|
|
#endif
|