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

Reply via email to