From: David Flynn <dav...@rd.bbc.co.uk>
Signed-off-by: David Flynn <dav...@rd.bbc.co.uk> --- schroedinger/schrodecoder.c | 17 +++++++++-------- 1 files changed, 9 insertions(+), 8 deletions(-) diff --git a/schroedinger/schrodecoder.c b/schroedinger/schrodecoder.c index 6efa37d..acc052f 100644 --- a/schroedinger/schrodecoder.c +++ b/schroedinger/schrodecoder.c @@ -377,7 +377,7 @@ schro_decoder_get_picture_number (SchroDecoder *decoder) SchroPicture *picture = NULL; if (decoder->reorder_buffer->n >= decoder->reorder_buffer_size || - decoder->coded_order || decoder->flushing) { + decoder->flushing) { picture = schro_queue_peek (decoder->reorder_buffer); } if (picture) @@ -466,10 +466,15 @@ schro_decoder_set_skip_ratio (SchroDecoder *decoder, double ratio) void schro_decoder_set_picture_order (SchroDecoder *decoder, int order) { + /* todo: this is the wrong place to set reorder_buffer_size, + * a future decoder update will extract the reorder_buffer_size + * from the seqhdr (or profile/level defaults) */ if (order == SCHRO_DECODER_PICTURE_ORDER_CODED) { decoder->coded_order = TRUE; + decoder->reorder_buffer_size = 1; } else { decoder->coded_order = FALSE; + decoder->reorder_buffer_size = 2+1; } } @@ -481,7 +486,7 @@ schro_decoder_pull_is_ready_locked (SchroDecoder *decoder) /* Not possible to pull from the RoB if not full */ /* NB, schro's RoB implementation can be larger than the spec */ if (decoder->reorder_buffer->n >= decoder->reorder_buffer_size || - decoder->coded_order || decoder->flushing) { + decoder->flushing) { picture = schro_queue_peek (decoder->reorder_buffer); } @@ -644,7 +649,7 @@ schro_decoder_dump (SchroDecoder *decoder) 0 /*picture->working*/); } if (decoder->reorder_buffer->n >= decoder->reorder_buffer_size || - decoder->coded_order || decoder->flushing) { + decoder->flushing) { SCHRO_ERROR("next_picture_number %d", schro_decoder_get_picture_number (decoder)); } else { SCHRO_ERROR("reorder_buffer too empty to determine next_picture_number: " @@ -869,11 +874,7 @@ schro_decoder_iterate_picture (SchroDecoder *decoder, SchroBuffer *buffer, Schro schro_async_lock (decoder->async); SCHRO_DEBUG("adding %d to queue", picture->picture_number); - if (!decoder->coded_order) { - schro_picturequeue_rob_insert (decoder->reorder_buffer, picture, decoder->reorder_buffer_size); - } else { - schro_queue_add (decoder->reorder_buffer, picture, picture->picture_number); - } + schro_picturequeue_rob_insert (decoder->reorder_buffer, picture, decoder->reorder_buffer_size); schro_async_signal_scheduler (decoder->async); schro_async_unlock (decoder->async); -- 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 Schrodinger-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/schrodinger-devel