mirror of
https://github.com/ultravideo/uvg266.git
synced 2024-11-24 10:34:05 +00:00
Return the original picture from encoder_encode.
This commit is contained in:
parent
afd0d3eee0
commit
efd361ee8e
|
@ -213,7 +213,7 @@ int main(int argc, char *argv[])
|
||||||
kvz_picture *img_rec = NULL;
|
kvz_picture *img_rec = NULL;
|
||||||
uint32_t len_out = 0;
|
uint32_t len_out = 0;
|
||||||
kvz_frame_info info_out;
|
kvz_frame_info info_out;
|
||||||
if (!api->encoder_encode(enc, img_in, &chunks_out, &len_out, &img_rec, &info_out)) {
|
if (!api->encoder_encode(enc, img_in, &chunks_out, &len_out, &img_rec, NULL, &info_out)) {
|
||||||
fprintf(stderr, "Failed to encode image.\n");
|
fprintf(stderr, "Failed to encode image.\n");
|
||||||
api->picture_free(img_in);
|
api->picture_free(img_in);
|
||||||
goto exit_failure;
|
goto exit_failure;
|
||||||
|
|
|
@ -127,11 +127,13 @@ static int kvazaar_encode(kvz_encoder *enc,
|
||||||
kvz_data_chunk **data_out,
|
kvz_data_chunk **data_out,
|
||||||
uint32_t *len_out,
|
uint32_t *len_out,
|
||||||
kvz_picture **pic_out,
|
kvz_picture **pic_out,
|
||||||
|
kvz_picture **src_out,
|
||||||
kvz_frame_info *info_out)
|
kvz_frame_info *info_out)
|
||||||
{
|
{
|
||||||
if (data_out) *data_out = NULL;
|
if (data_out) *data_out = NULL;
|
||||||
if (len_out) *len_out = 0;
|
if (len_out) *len_out = 0;
|
||||||
if (pic_out) *pic_out = NULL;
|
if (pic_out) *pic_out = NULL;
|
||||||
|
if (src_out) *src_out = NULL;
|
||||||
|
|
||||||
encoder_state_t *state = &enc->states[enc->cur_state_num];
|
encoder_state_t *state = &enc->states[enc->cur_state_num];
|
||||||
|
|
||||||
|
@ -174,6 +176,7 @@ static int kvazaar_encode(kvz_encoder *enc,
|
||||||
if (len_out) *len_out = kvz_bitstream_tell(&output_state->stream) / 8;
|
if (len_out) *len_out = kvz_bitstream_tell(&output_state->stream) / 8;
|
||||||
if (data_out) *data_out = kvz_bitstream_take_chunks(&output_state->stream);
|
if (data_out) *data_out = kvz_bitstream_take_chunks(&output_state->stream);
|
||||||
if (pic_out) *pic_out = kvz_image_copy_ref(output_state->tile->frame->rec);
|
if (pic_out) *pic_out = kvz_image_copy_ref(output_state->tile->frame->rec);
|
||||||
|
if (src_out) *src_out = kvz_image_copy_ref(output_state->tile->frame->source);
|
||||||
if (info_out) set_frame_info(info_out, output_state);
|
if (info_out) set_frame_info(info_out, output_state);
|
||||||
|
|
||||||
output_state->frame_done = 1;
|
output_state->frame_done = 1;
|
||||||
|
|
|
@ -344,9 +344,9 @@ typedef struct kvz_api {
|
||||||
* \brief Encode one frame.
|
* \brief Encode one frame.
|
||||||
*
|
*
|
||||||
* Add pic_in to the encoding pipeline. If an encoded frame is ready, return
|
* Add pic_in to the encoding pipeline. If an encoded frame is ready, return
|
||||||
* the bitstream, length of the bitstream, the reconstructed frame and frame
|
* the bitstream, length of the bitstream, the reconstructed frame, the
|
||||||
* info in data_out, len_out, pic_out and info_out, respectively. Otherwise,
|
* original frame and frame info in data_out, len_out, pic_out, src_out and
|
||||||
* set the output parameters to NULL.
|
* info_out, respectively. Otherwise, set the output parameters to NULL.
|
||||||
*
|
*
|
||||||
* After passing all of the input frames, the caller should keep calling this
|
* After passing all of the input frames, the caller should keep calling this
|
||||||
* function with pic_in set to NULL, until no more data is returned in the
|
* function with pic_in set to NULL, until no more data is returned in the
|
||||||
|
@ -354,17 +354,19 @@ typedef struct kvz_api {
|
||||||
*
|
*
|
||||||
* The caller must not modify pic_in after passing it to this function.
|
* The caller must not modify pic_in after passing it to this function.
|
||||||
*
|
*
|
||||||
* If pic_out and data_out are set to non-NULL values, the caller is
|
* If data_out, pic_out and src_out are set to non-NULL values, the caller is
|
||||||
* responsible for calling picture_free and chunk_free on them.
|
* responsible for calling chunk_free and picture_free on them.
|
||||||
*
|
*
|
||||||
* A null pointer may be passed in place of any of the parameters data_out,
|
* A null pointer may be passed in place of any of the parameters data_out,
|
||||||
* len_out, pic_out or info_out to skip returning the corresponding value.
|
* len_out, pic_out, src_out or info_out to skip returning the corresponding
|
||||||
|
* value.
|
||||||
*
|
*
|
||||||
* \param encoder encoder
|
* \param encoder encoder
|
||||||
* \param pic_in input frame or NULL
|
* \param pic_in input frame or NULL
|
||||||
* \param data_out Returns the encoded data.
|
* \param data_out Returns the encoded data.
|
||||||
* \param len_out Returns number of bytes in the encoded data.
|
* \param len_out Returns number of bytes in the encoded data.
|
||||||
* \param pic_out Returns the reconstructed picture.
|
* \param pic_out Returns the reconstructed picture.
|
||||||
|
* \param src_out Returns the original picture.
|
||||||
* \param info_out Returns information about the encoded picture.
|
* \param info_out Returns information about the encoded picture.
|
||||||
* \return 1 on success, 0 on error.
|
* \return 1 on success, 0 on error.
|
||||||
*/
|
*/
|
||||||
|
@ -373,6 +375,7 @@ typedef struct kvz_api {
|
||||||
kvz_data_chunk **data_out,
|
kvz_data_chunk **data_out,
|
||||||
uint32_t *len_out,
|
uint32_t *len_out,
|
||||||
kvz_picture **pic_out,
|
kvz_picture **pic_out,
|
||||||
|
kvz_picture **src_out,
|
||||||
kvz_frame_info *info_out);
|
kvz_frame_info *info_out);
|
||||||
} kvz_api;
|
} kvz_api;
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,6 @@
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
// KVZ_API_VERSION is incremented every time the public api changes.
|
// KVZ_API_VERSION is incremented every time the public api changes.
|
||||||
#define KVZ_API_VERSION 6
|
#define KVZ_API_VERSION 7
|
||||||
|
|
||||||
#endif // KVAZAAR_VERSION_H_
|
#endif // KVAZAAR_VERSION_H_
|
||||||
|
|
Loading…
Reference in a new issue