Re: [Patch] Add src/video_dec/group_raw.h in the tarball

Mikko Rasa <[email protected]> Mon, 14 Nov 2016 18:09:29 +0200
Newsgroups gmane.comp.video.xine.devel
Message-ID <[email protected]>
On 14.11.2016 17:56, Torsten Jager wrote:
> Hi,
>
>> I'll butt in here to say that I'm using Xine as the backend of my own
>> media center software, so I do care.  I have a few patches in my
>> local repository that fix a few things for the movies I own
>> (including adding integer PCM and HDMV/TextST support).
>> I could send them in if I can figure out how (I'm more used to git).
>
> Thank you.
> You can send them to me as long as my upload path is still working ;-)
>
> If you dont like HG, a plain diff -pu will do fine, too.
> In fact, I use these myself for transferring my own patches to that
> online terminal. This way I avoid creating branches when somebody
> had added stuff between two sessions.

Here you go.  I hope attachments are okay.  I made them with hg export 
-o "%R_%h_%m.patch"; let me know if I should have used something different.

The commit messages are not too detailed but if something is unclear 
feel free to ask and I'll dig around in my memory to explain what I've done.

-- 
Mikko

------------------------------------------------------------------------------
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today. http://sdm.link/xeonphi

_______________________________________________
xine-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xine-devel
12696_d8857fd8b4e9_Handle_integer_PCM_audio_formats_in_matroska_demuxer.patch (text/x-diff, 1.1 KB)
# HG changeset patch
# User Mikko Rasa <[email protected]>
# Date 1445126700 -10800
#      Sun Oct 18 03:05:00 2015 +0300
# Node ID d8857fd8b4e99d8faa3aed4f840c201595e7804d
# Parent  79bf8d28f7924aacd820913846e16acdc38c083a
Handle integer PCM audio formats in matroska demuxer

diff -r 79bf8d28f792 -r d8857fd8b4e9 src/demuxers/demux_matroska.c
--- a/src/demuxers/demux_matroska.c	Sat Aug 08 16:36:25 2015 +0200
+++ b/src/demuxers/demux_matroska.c	Sun Oct 18 03:05:00 2015 +0300
@@ -1436,7 +1436,15 @@
       init_codec = init_codec_audio;
 
     } else if (!strcmp(track->codec_id, MATROSKA_CODEC_ID_A_PCM_INT_BE)) {
+      lprintf("MATROSKA_CODEC_ID_A_PCM_INT_BE");
+      track->buf_type = BUF_AUDIO_LPCM_BE;
+      init_codec = init_codec_audio;
+
     } else if (!strcmp(track->codec_id, MATROSKA_CODEC_ID_A_PCM_INT_LE)) {
+      lprintf("MATROSKA_CODEC_ID_A_PCM_INT_LE");
+      track->buf_type = BUF_AUDIO_LPCM_LE;
+      init_codec = init_codec_audio;
+
     } else if (!strcmp(track->codec_id, MATROSKA_CODEC_ID_A_PCM_FLOAT)) {
     } else if (!strcmp(track->codec_id, MATROSKA_CODEC_ID_A_AC3)) {
       lprintf("MATROSKA_CODEC_ID_A_AC3\n");
12697_c9ed54cebfd9_Fix_some_logging_statements_in_vdpau_plugins.patch (text/x-diff, 12.3 KB)
# HG changeset patch
# User Mikko Rasa <[email protected]>
# Date 1445173253 -10800
#      Sun Oct 18 16:00:53 2015 +0300
# Node ID c9ed54cebfd991beb0c6da9d6f8171c5fd143015
# Parent  d8857fd8b4e99d8faa3aed4f840c201595e7804d
Fix some logging statements in vdpau plugins

diff -r d8857fd8b4e9 -r c9ed54cebfd9 src/video_dec/libvdpau/alterh264_decode.c
--- a/src/video_dec/libvdpau/alterh264_decode.c	Sun Oct 18 03:05:00 2015 +0300
+++ b/src/video_dec/libvdpau/alterh264_decode.c	Sun Oct 18 16:00:53 2015 +0300
@@ -2243,7 +2243,7 @@
 {
   vdpau_h264_alter_decoder_t *this = (vdpau_h264_alter_decoder_t *) this_gen;
 
-  printf ("vdpau_h264_alter_flush\n");
+  lprintf ("vdpau_h264_alter_flush\n");
   dpb_draw_frames (this, MAX_POC, DPB_DRAW_REFS);
 }
 
@@ -2268,7 +2268,7 @@
 vdpau_h264_alter_discontinuity (video_decoder_t * this_gen)
 {
   vdpau_h264_alter_decoder_t *this = (vdpau_h264_alter_decoder_t *) this_gen;
-  printf ("vdpau_h264_alter_discontinuity\n");
+  lprintf ("vdpau_h264_alter_discontinuity\n");
 
   dpb_clear_all_pts (&this->sequence);
   this->sequence.reset = VO_NEW_SEQUENCE_FLAG;
diff -r d8857fd8b4e9 -r c9ed54cebfd9 src/video_out/video_out_vdpau.c
--- a/src/video_out/video_out_vdpau.c	Sun Oct 18 03:05:00 2015 +0300
+++ b/src/video_out/video_out_vdpau.c	Sun Oct 18 16:00:53 2015 +0300
@@ -1388,29 +1388,29 @@
     switch ( this->deinterlacers_method[deinterlace_method] ) {
       case DEINT_BOB:
         feature_enables[0] = feature_enables[1] = 0;
-        fprintf(stderr, "vo_vdpau: deinterlace: bob\n" );
+        lprintf("vo_vdpau: deinterlace: bob\n" );
         break;
       case DEINT_HALF_TEMPORAL:
         feature_enables[0] = 1; feature_enables[1] = 0;
-        fprintf(stderr, "vo_vdpau: deinterlace: half_temporal\n" );
+        lprintf("vo_vdpau: deinterlace: half_temporal\n" );
         break;
       case DEINT_TEMPORAL:
         feature_enables[0] = 1; feature_enables[1] = 0;
-        fprintf(stderr, "vo_vdpau: deinterlace: temporal\n" );
+        lprintf("vo_vdpau: deinterlace: temporal\n" );
         break;
       case DEINT_HALF_TEMPORAL_SPATIAL:
         feature_enables[0] = feature_enables[1] = 1;
-        fprintf(stderr, "vo_vdpau: deinterlace: half_temporal_spatial\n" );
+        lprintf("vo_vdpau: deinterlace: half_temporal_spatial\n" );
         break;
       case DEINT_TEMPORAL_SPATIAL:
         feature_enables[0] = feature_enables[1] = 1;
-        fprintf(stderr, "vo_vdpau: deinterlace: temporal_spatial\n" );
+        lprintf("vo_vdpau: deinterlace: temporal_spatial\n" );
         break;
     }
   }
   else {
     feature_enables[0] = feature_enables[1] = 0;
-    fprintf(stderr, "vo_vdpau: deinterlace: none\n" );
+    lprintf("vo_vdpau: deinterlace: none\n" );
   }
 
   vdp_video_mixer_set_feature_enables( this->video_mixer, features_count, features, feature_enables );
@@ -1434,7 +1434,7 @@
 
   vdp_video_mixer_set_feature_enables( this->video_mixer, 1, features, feature_enables );
   vdp_video_mixer_get_feature_enables( this->video_mixer, 1, features, feature_enables );
-  fprintf(stderr, "vo_vdpau: enabled features: inverse_telecine=%d\n", feature_enables[0] );
+  lprintf("vo_vdpau: enabled features: inverse_telecine=%d\n", feature_enables[0] );
 }
 
 
@@ -1444,7 +1444,7 @@
   vdpau_driver_t  *this  = (vdpau_driver_t *) this_gen;
 
   this->deinterlace_method_sd = entry->num_value;
-  fprintf(stderr,  "vo_vdpau: deinterlace_method_sd=%d\n", this->deinterlace_method_sd );
+  lprintf("vo_vdpau: deinterlace_method_sd=%d\n", this->deinterlace_method_sd );
   vdpau_set_deinterlace( (vo_driver_t*)this_gen );
 }
 
@@ -1455,7 +1455,7 @@
   vdpau_driver_t  *this  = (vdpau_driver_t *) this_gen;
 
   this->deinterlace_method_hd = entry->num_value;
-  fprintf(stderr,  "vo_vdpau: deinterlace_method_hd=%d\n", this->deinterlace_method_hd );
+  lprintf("vo_vdpau: deinterlace_method_hd=%d\n", this->deinterlace_method_hd );
   vdpau_set_deinterlace( (vo_driver_t*)this_gen );
 }
 
@@ -1480,7 +1480,7 @@
     vdp_video_mixer_set_feature_enables( this->video_mixer, 1, features, feature_enables );
   }
 
-  fprintf(stderr,  "vo_vdpau: set_scaling_level=%d\n", this->scaling_level_current );
+  lprintf("vo_vdpau: set_scaling_level=%d\n", this->scaling_level_current );
 #endif
 }
 
@@ -1491,7 +1491,7 @@
   vdpau_driver_t  *this  = (vdpau_driver_t *) this_gen;
 
   this->scaling_level_current = entry->num_value;
-  fprintf(stderr,  "vo_vdpau: scaling_quality=%d\n", this->scaling_level_current );
+  lprintf("vo_vdpau: scaling_quality=%d\n", this->scaling_level_current );
   vdpau_set_scaling_level( (vo_driver_t*)this_gen );
 }
 
@@ -1502,7 +1502,7 @@
   vdpau_driver_t  *this  = (vdpau_driver_t *) this_gen;
 
   this->enable_inverse_telecine = entry->num_value;
-  fprintf(stderr, "vo_vdpau: enable inverse_telecine=%d\n", this->enable_inverse_telecine );
+  lprintf("vo_vdpau: enable inverse_telecine=%d\n", this->enable_inverse_telecine );
   vdpau_set_inverse_telecine( (vo_driver_t*)this_gen );
 }
 
@@ -1513,7 +1513,7 @@
   vdpau_driver_t  *this  = (vdpau_driver_t *) this_gen;
 
   this->honor_progressive = entry->num_value;
-  fprintf(stderr, "vo_vdpau: honor_progressive=%d\n", this->honor_progressive );
+  lprintf("vo_vdpau: honor_progressive=%d\n", this->honor_progressive );
 }
 
 
@@ -1528,14 +1528,14 @@
     VdpVideoMixerFeature features[] = { VDP_VIDEO_MIXER_FEATURE_NOISE_REDUCTION };
     VdpBool feature_enables[] = { 0 };
     vdp_video_mixer_set_feature_enables( this_gen->video_mixer, 1, features, feature_enables );
-    fprintf(stderr, "vo_vdpau: disable noise reduction.\n" );
+    lprintf("vo_vdpau: disable noise reduction.\n" );
     return;
   }
   else {
     VdpVideoMixerFeature features[] = { VDP_VIDEO_MIXER_FEATURE_NOISE_REDUCTION };
     VdpBool feature_enables[] = { 1 };
     vdp_video_mixer_set_feature_enables( this_gen->video_mixer, 1, features, feature_enables );
-    fprintf(stderr, "vo_vdpau: enable noise reduction.\n" );
+    lprintf("vo_vdpau: enable noise reduction.\n" );
   }
 
   const VdpVideoMixerAttribute attributes [] = { VDP_VIDEO_MIXER_ATTRIBUTE_NOISE_REDUCTION_LEVEL };
@@ -1557,14 +1557,14 @@
     VdpVideoMixerFeature features[] = { VDP_VIDEO_MIXER_FEATURE_SHARPNESS  };
     VdpBool feature_enables[] = { 0 };
     vdp_video_mixer_set_feature_enables( this_gen->video_mixer, 1, features, feature_enables );
-    fprintf(stderr, "vo_vdpau: disable sharpness.\n" );
+    lprintf("vo_vdpau: disable sharpness.\n" );
     return;
   }
   else {
     VdpVideoMixerFeature features[] = { VDP_VIDEO_MIXER_FEATURE_SHARPNESS  };
     VdpBool feature_enables[] = { 1 };
     vdp_video_mixer_set_feature_enables( this_gen->video_mixer, 1, features, feature_enables );
-    fprintf(stderr, "vo_vdpau: enable sharpness.\n" );
+    lprintf("vo_vdpau: enable sharpness.\n" );
   }
 
   const VdpVideoMixerAttribute attributes [] = { VDP_VIDEO_MIXER_ATTRIBUTE_SHARPNESS_LEVEL };
@@ -1581,7 +1581,7 @@
   vdpau_driver_t  *this  = (vdpau_driver_t *) this_gen;
 
   this->sd_only_properties = entry->num_value;
-  printf( "vo_vdpau: enable sd only noise=%d, sd only sharpness %d\n", ((this->sd_only_properties & 1) != 0), (this->sd_only_properties >= 2) );
+  lprintf( "vo_vdpau: enable sd only noise=%d, sd only sharpness %d\n", ((this->sd_only_properties & 1) != 0), (this->sd_only_properties >= 2) );
   vdpau_update_noise(this);
   vdpau_update_sharpness(this);
 }
@@ -1690,7 +1690,7 @@
   if ( st != VDP_STATUS_OK )
     fprintf(stderr, "vo_vdpau: error, can't set skip_chroma !!\n" );
   else
-    fprintf(stderr, "vo_vdpau: skip_chroma = %d\n", this_gen->skip_chroma );
+    lprintf(stderr, "vo_vdpau: skip_chroma = %d\n", this_gen->skip_chroma );
 }
 
 
@@ -1714,9 +1714,9 @@
   const void* attribute_values[] = { &bg };
   VdpStatus st = vdp_video_mixer_set_attribute_values( this_gen->video_mixer, 1, attributes, attribute_values );
   if ( st != VDP_STATUS_OK )
-    printf( "vo_vdpau: error, can't set background_color !!\n" );
+    fprintf(stderr, "vo_vdpau: error, can't set background_color !!\n" );
   else
-    printf( "vo_vdpau: background_color = %d\n", this_gen->background );
+    lprintf( "vo_vdpau: background_color = %d\n", this_gen->background );
 }
 
 
@@ -2171,7 +2171,7 @@
 {
   vdpau_driver_t *this = (vdpau_driver_t*)this_gen;
 
-  fprintf(stderr,"vdpau_set_property: property=%d, value=%d\n", property, value );
+  lprintf("vdpau_set_property: property=%d, value=%d\n", property, value );
 
   switch (property) {
     case VO_PROP_INTERLACED:
@@ -2735,13 +2735,13 @@
     return NULL;
   uint32_t tmp;
   vdp_get_api_version( &tmp );
-  fprintf(stderr, "vo_vdpau: vdpau API version : %d\n", tmp );
+  xprintf(class->xine, XINE_VERBOSITY_LOG, "vo_vdpau: vdpau API version : %d\n", tmp );
   st = vdp_get_proc_address( vdp_device, VDP_FUNC_ID_GET_INFORMATION_STRING , (void*)&vdp_get_information_string );
   if ( vdpau_init_error( st, "Can't get GET_INFORMATION_STRING proc address !!", &this->vo_driver, 1 ) )
     return NULL;
   const char *s;
   st = vdp_get_information_string( &s );
-  fprintf(stderr, "vo_vdpau: vdpau implementation description : %s\n", s );
+  xprintf(class->xine, XINE_VERBOSITY_LOG, "vo_vdpau: vdpau implementation description : %s\n", s );
   VdpBool ok;
   uint32_t max_surface_width, max_surface_height;
   st = vdp_get_proc_address( vdp_device, VDP_FUNC_ID_VIDEO_SURFACE_QUERY_CAPABILITIES , (void*)&vdp_video_surface_query_capabilities );
@@ -2755,7 +2755,7 @@
     vdpau_dispose( &this->vo_driver );
     return NULL;
   }
-  fprintf(stderr, "vo_vdpau: maximum video surface size for chroma type 4:2:2 is %dx%d\n", (int)max_surface_width, (int)max_surface_height );
+  xprintf(class->xine, XINE_VERBOSITY_LOG, "vo_vdpau: maximum video surface size for chroma type 4:2:2 is %dx%d\n", (int)max_surface_width, (int)max_surface_height );
   st = vdp_video_surface_query_capabilities( vdp_device, VDP_CHROMA_TYPE_420, &ok, &max_surface_width, &max_surface_height );
   if ( vdpau_init_error( st, "Failed to check vdpau chroma type 4:2:0 capability", &this->vo_driver, 1 ) )
     return NULL;
@@ -2764,7 +2764,7 @@
     vdpau_dispose( &this->vo_driver );
     return NULL;
   }
-  fprintf(stderr, "vo_vdpau: maximum video surface size for chroma type 4:2:0 is %dx%d\n", (int)max_surface_width, (int)max_surface_height );
+  xprintf(class->xine, XINE_VERBOSITY_LOG, "vo_vdpau: maximum video surface size for chroma type 4:2:0 is %dx%d\n", (int)max_surface_width, (int)max_surface_height );
   st = vdp_get_proc_address( vdp_device, VDP_FUNC_ID_VIDEO_SURFACE_QUERY_GET_PUT_BITS_Y_CB_CR_CAPABILITIES , (void*)&vdp_video_surface_query_get_put_bits_ycbcr_capabilities );
   if ( vdpau_init_error( st, "Can't get VIDEO_SURFACE_QUERY_GET_PUT_BITS_Y_CB_CR_CAPABILITIES proc address !!", &this->vo_driver, 1 ) )
     return NULL;
@@ -2795,7 +2795,7 @@
     vdpau_dispose( &this->vo_driver );
     return NULL;
   }
-  fprintf(stderr, "vo_vdpau: maximum output surface size is %dx%d\n", (int)max_surface_width, (int)max_surface_height );
+  xprintf(class->xine, XINE_VERBOSITY_LOG, "vo_vdpau: maximum output surface size is %dx%d\n", (int)max_surface_width, (int)max_surface_height );
   st = vdp_get_proc_address( vdp_device, VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_GET_PUT_BITS_NATIVE_CAPABILITIES , (void*)&vdp_output_surface_query_get_put_bits_native_capabilities );
   if ( vdpau_init_error( st, "Can't get OUTPUT_SURFACE_QUERY_GET_PUT_BITS_NATIVE_CAPABILITIES proc address !!", &this->vo_driver, 1 ) )
     return NULL;
@@ -2967,7 +2967,7 @@
     this->output_surface_buffer_size = 2;
   if (this->output_surface_buffer_size > NOUTPUTSURFACEBUFFER)
     this->output_surface_buffer_size = NOUTPUTSURFACEBUFFER;
-  fprintf(stderr, "vo_vdpau: hold a maximum of %d video output surfaces for reuse\n", this->output_surface_buffer_size);
+  xprintf(class->xine, XINE_VERBOSITY_LOG, "vo_vdpau: hold a maximum of %d video output surfaces for reuse\n", this->output_surface_buffer_size);
 
   this->num_big_output_surfaces_created = 0;
   for (i = 0; i < this->output_surface_buffer_size; ++i)
@@ -2983,7 +2983,7 @@
     this->queue_length = 2;
   if (this->queue_length > NOUTPUTSURFACE)
     this->queue_length = NOUTPUTSURFACE;
-  fprintf(stderr, "vo_vdpau: using %d output surfaces of size %dx%d for display queue\n", this->queue_length, this->display_width, this->display_height);
+  xprintf(class->xine, XINE_VERBOSITY_LOG, "vo_vdpau: using %d output surfaces of size %dx%d for display queue\n", this->queue_length, this->display_width, this->display_height);
 
   this->current_output_surface = 0;
   this->init_queue = 0;
12698_62c75ddfe283_Rudimentary_HDMV_TextST_support_in_Matroska_demuxer.patch (text/x-diff, 3.7 KB)
# HG changeset patch
# User Mikko Rasa <[email protected]>
# Date 1468495014 -10800
#      Thu Jul 14 14:16:54 2016 +0300
# Node ID 62c75ddfe283efe3df0721acdd96d925ffd1cdb5
# Parent  c9ed54cebfd991beb0c6da9d6f8171c5fd143015
Rudimentary HDMV/TextST support in Matroska demuxer

diff -r c9ed54cebfd9 -r 62c75ddfe283 src/demuxers/demux_matroska.c
--- a/src/demuxers/demux_matroska.c	Sun Oct 18 16:00:53 2015 +0300
+++ b/src/demuxers/demux_matroska.c	Thu Jul 14 14:16:54 2016 +0300
@@ -1131,6 +1131,95 @@
   free(new_data);
 }
 
+static void handle_hdmv_textst (demux_plugin_t *this_gen, matroska_track_t *track,
+                                int decoder_flags,
+                                uint8_t *data, size_t data_len,
+                                int64_t data_pts, int data_duration,
+                                int input_normpos, int input_time) {
+  buf_element_t *buf;
+  uint32_t *val;
+  char *dest;
+  int dest_len;
+  int dest_pos;
+  int i, j;
+  uint8_t *ptr;
+  int palette_update_flag;
+  int num_regions;
+
+  ptr = data;
+  if (*ptr != 0x82) {
+    lprintf("Not a dialog presentation segment\n");
+    return;
+  }
+  ++ptr;
+
+  // Skip length and start/end pts values
+  ptr += 12;
+
+  palette_update_flag = *ptr++;
+  if (palette_update_flag) {
+    lprintf("Dunno what to do with palette updates\n");
+    return;
+  }
+
+  buf = track->fifo->buffer_pool_alloc(track->fifo);
+  buf->type = track->buf_type;
+  buf->decoder_flags = decoder_flags | BUF_FLAG_SPECIAL;
+  buf->decoder_info[1] = BUF_SPECIAL_CHARSET_ENCODING;
+  buf->decoder_info_ptr[2] = "utf-8";
+  buf->decoder_info[2] = strlen(buf->decoder_info_ptr[2]);
+
+  val = (uint32_t *)buf->content;
+  *val++ = data_pts / 90;                    /* start time */
+  *val++ = (data_pts + data_duration) / 90;  /* end time   */
+
+  dest = buf->content + 8;
+  dest_len = buf->max_size - 8;
+  dest_pos = 0;
+
+  num_regions = *ptr++;
+  for (i = 0; i < num_regions; ++i) {
+    int length;
+    uint8_t *end;
+
+    // skip flags and style id reference
+    ptr += 2;
+
+    length = (ptr[0]<<8) | ptr[1];
+    ptr += 2;
+
+    end = ptr + length;
+    while (ptr < end) {
+      int marker;
+      int type;
+      int length;
+
+      marker = *ptr++;
+      if (marker != 0x1B)
+        continue;
+
+      type = *ptr++;
+      length = *ptr++;
+
+      if (type == 0x01) {
+        int k;
+        for (k = 0; k < length; ++k)
+          dest[dest_pos++] = ptr[k];
+      } else if (type == 0x0A) {
+        dest[dest_pos++] = '\n';
+      } else {
+        lprintf("Unknown TextST data %02X\n", type);
+      }
+
+      ptr += length;
+    }
+  }
+
+  dest[dest_pos] = 0;
+
+  track->fifo->put(track->fifo, buf);
+}
+
 static void fill_extra_data(matroska_track_t *track, uint32_t fourcc) {
 
   xine_bmiheader *bih;
@@ -1547,6 +1636,11 @@
       track->buf_type = BUF_SPU_HDMV;
       track->handle_content = handle_hdmv_pgs;
       init_codec = init_codec_spu;
+    } else if (!strcmp(track->codec_id, MATROSKA_CODEC_ID_S_HDMV_TEXTST)) {
+      lprintf("MATROSKA_CODEC_ID_S_HDMV_TEXTST\n");
+      track->buf_type = BUF_SPU_OGM;
+      track->handle_content = handle_hdmv_textst;
+      init_codec = init_codec_spu;
     } else {
       xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, "unknown codec %s\n", track->codec_id);
     }
diff -r c9ed54cebfd9 -r 62c75ddfe283 src/demuxers/matroska.h
--- a/src/demuxers/matroska.h	Sun Oct 18 16:00:53 2015 +0300
+++ b/src/demuxers/matroska.h	Thu Jul 14 14:16:54 2016 +0300
@@ -348,6 +348,7 @@
 #define MATROSKA_CODEC_ID_S_ASS          "S_ASS"         /* deprecated */
 #define MATROSKA_CODEC_ID_S_VOBSUB       "S_VOBSUB"
 #define MATROSKA_CODEC_ID_S_HDMV_PGS     "S_HDMV/PGS"
+#define MATROSKA_CODEC_ID_S_HDMV_TEXTST  "S_HDMV/TEXTST"
 
 /* block lacing */
 #define MATROSKA_NO_LACING               0x0
12699_e4b0a52f2558_Increase_MAX_FRAMES_in_demux_matroska_h_to_handle_some_BD_rips.patch (text/x-diff, 691 B)
# HG changeset patch
# User Mikko Rasa <[email protected]>
# Date 1468495263 -10800
#      Thu Jul 14 14:21:03 2016 +0300
# Node ID e4b0a52f25582850faf08c8735ea03e2fc728b83
# Parent  62c75ddfe283efe3df0721acdd96d925ffd1cdb5
Increase MAX_FRAMES in demux_matroska.h to handle some BD rips

diff -r 62c75ddfe283 -r e4b0a52f2558 src/demuxers/demux_matroska.h
--- a/src/demuxers/demux_matroska.h	Thu Jul 14 14:16:54 2016 +0300
+++ b/src/demuxers/demux_matroska.h	Thu Jul 14 14:21:03 2016 +0300
@@ -46,7 +46,7 @@
 #define NUM_PREVIEW_BUFFERS      10
 
 #define MAX_STREAMS             128
-#define MAX_FRAMES               32
+#define MAX_FRAMES              128
 
 #define WRAP_THRESHOLD        90000