From: David Flynn <[email protected]>
Signed-off-by: David Flynn <[email protected]> --- schroedinger/schrodecoder.c | 38 ++++++++++++-------------------------- schroedinger/schrodecoder.h | 4 +--- 2 files changed, 13 insertions(+), 29 deletions(-) diff --git a/schroedinger/schrodecoder.c b/schroedinger/schrodecoder.c index 8b7f471..df9b831 100644 --- a/schroedinger/schrodecoder.c +++ b/schroedinger/schrodecoder.c @@ -698,14 +698,9 @@ schro_decoder_set_flushing (SchroDecoder *decoder, int value) int schro_decoder_push (SchroDecoder *decoder, SchroBuffer *buffer) { - SCHRO_ASSERT(decoder->input_buffer == NULL); - decoder->flushing = FALSE; - decoder->input_buffer = buffer; - schro_unpack_init_with_data (&decoder->unpack, - decoder->input_buffer->data, - decoder->input_buffer->length, 1); + schro_unpack_init_with_data (&decoder->unpack, buffer->data, buffer->length, 1); schro_decoder_decode_parse_header(decoder); if (decoder->parse_code == SCHRO_PARSE_CODE_SEQUENCE_HEADER) { @@ -715,11 +710,11 @@ schro_decoder_push (SchroDecoder *decoder, SchroBuffer *buffer) if (!decoder->have_sequence_header) { schro_decoder_parse_sequence_header(decoder); decoder->have_sequence_header = TRUE; - decoder->sequence_header_buffer = schro_buffer_dup (decoder->input_buffer); + decoder->sequence_header_buffer = schro_buffer_dup (buffer); ret = SCHRO_DECODER_FIRST_ACCESS_UNIT; } else { - if (schro_decoder_compare_sequence_header_buffer (decoder->input_buffer, + if (schro_decoder_compare_sequence_header_buffer (buffer, decoder->sequence_header_buffer)) { ret = SCHRO_DECODER_OK; } else { @@ -728,8 +723,7 @@ schro_decoder_push (SchroDecoder *decoder, SchroBuffer *buffer) } } - schro_buffer_unref (decoder->input_buffer); - decoder->input_buffer = NULL; + schro_buffer_unref (buffer); return ret; } @@ -746,22 +740,18 @@ schro_decoder_push (SchroDecoder *decoder, SchroBuffer *buffer) decoder->has_md5 = TRUE; } - schro_buffer_unref (decoder->input_buffer); - decoder->input_buffer = NULL; - + schro_buffer_unref (buffer); return SCHRO_DECODER_OK; } if (SCHRO_PARSE_CODE_IS_PADDING(decoder->parse_code)) { - schro_buffer_unref (decoder->input_buffer); - decoder->input_buffer = NULL; + schro_buffer_unref (buffer); return SCHRO_DECODER_OK; } if (SCHRO_PARSE_CODE_IS_END_OF_SEQUENCE (decoder->parse_code)) { SCHRO_DEBUG ("decoding end sequence"); - schro_buffer_unref (decoder->input_buffer); - decoder->input_buffer = NULL; + schro_buffer_unref (buffer); decoder->end_of_stream = TRUE; decoder->flushing = TRUE; return SCHRO_DECODER_EOS; @@ -771,22 +761,19 @@ schro_decoder_push (SchroDecoder *decoder, SchroBuffer *buffer) if (!decoder->have_sequence_header) { SCHRO_INFO ("no access unit -- dropping picture"); - schro_buffer_unref (decoder->input_buffer); - decoder->input_buffer = NULL; + schro_buffer_unref (buffer); return SCHRO_DECODER_OK; } - return schro_decoder_iterate_picture (decoder); + return schro_decoder_iterate_picture (decoder, buffer); } - schro_buffer_unref (decoder->input_buffer); - decoder->input_buffer = NULL; - + schro_buffer_unref (buffer); return SCHRO_DECODER_ERROR; } int -schro_decoder_iterate_picture (SchroDecoder *decoder) +schro_decoder_iterate_picture (SchroDecoder *decoder, SchroBuffer *buffer) { SchroPicture *picture; SchroParams *params; @@ -795,8 +782,7 @@ schro_decoder_iterate_picture (SchroDecoder *decoder) decoder->picture = picture; params = &picture->params; - picture->input_buffer = decoder->input_buffer; - decoder->input_buffer = NULL; + picture->input_buffer = buffer; params->num_refs = SCHRO_PARSE_CODE_NUM_REFS(decoder->parse_code); params->is_lowdelay = SCHRO_PARSE_CODE_IS_LOW_DELAY(decoder->parse_code); diff --git a/schroedinger/schrodecoder.h b/schroedinger/schrodecoder.h index 02e315c..5af0e01 100644 --- a/schroedinger/schrodecoder.h +++ b/schroedinger/schrodecoder.h @@ -41,8 +41,6 @@ struct _SchroDecoder { SchroOpenGL *opengl; int use_opengl; - SchroBuffer *input_buffer; - SchroPictureNumber next_frame_number; SchroPicture *picture; @@ -176,7 +174,7 @@ SchroPicture * schro_picture_new (SchroDecoder *decoder); SchroPicture * schro_picture_ref (SchroPicture *picture); void schro_picture_unref (SchroPicture *picture); -int schro_decoder_iterate_picture (SchroDecoder *decoder); +int schro_decoder_iterate_picture (SchroDecoder *decoder, SchroBuffer *buffer); void schro_decoder_parse_picture (SchroPicture *picture); void schro_decoder_parse_picture_header (SchroPicture *picture); void schro_decoder_parse_picture_prediction_parameters (SchroPicture *picture); -- 1.5.6.5 ------------------------------------------------------------------------------ This SF.net email is sponsored by: SourcForge Community SourceForge wants to tell your story. http://p.sf.net/sfu/sf-spreadtheword _______________________________________________ Schrodinger-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/schrodinger-devel
