[FFmpeg-trac] #1815(avformat:new): FFmpeg does not copy the default and forced track flags for matroka files

FFmpeg trac at avcodec.org
Sun Oct 14 13:08:50 CEST 2012


#1815: FFmpeg does not copy the default and forced track flags for matroka files
----------------------------------+---------------------------------------
             Reporter:  billie    |                     Type:  enhancement
               Status:  new       |                 Priority:  normal
            Component:  avformat  |                  Version:  git-master
             Keywords:            |               Blocked By:
             Blocking:            |  Reproduced by developer:  0
Analyzed by developer:  0         |
----------------------------------+---------------------------------------
 The first output is from a sample file I have created with mmg from
 mkvtoolnix with every possible combination of the forced and default
 flags. mmg allows one default track for all video, audio and subtitle
 tracks but multiple forced tracks.

 The second/third/fourth output is the result from "ffmpeg -i test_orig.mkv
 -c: copy -map 0 -f matroska test_ffmpeg_*.mkv". Currently ffmpeg seems to
 drop the forced flag and every stream which has no flag gets the default
 flag.

 I took a look at libavformat/matroskaenc.c applied the changes from the
 attached patch. The patch only works if I add the forced flag before the
 default flag with put_ebml_uint. If I add it afterwards I get the third
 output. Here existing flags were kept but all streams without flags still
 get the default flags.

 Adding the forced flag before adding the default flag gives the desired
 fourth output. All flags are copied correctly.

 I do not have any experience in c programming, so I am not sure if this is
 the correct fix so I would be glad if somebody could take a look at this.

 Furthermore is it possible to add a way of setting this flags with ffmpeg,
 currently this seems not doable.

 1: ffmpeg -i test_orig.mkv 2>&1 | grep Stream
 Stream #0:0: Video: h264 (High), yuv420p, 720x576 [SAR 64:45 DAR 16:9], 25
 fps, 25 tbr, 1k tbn, 50 tbc (default)
 Stream #0:1(ger): Audio: ac3, 48000 Hz, 5.1(side), s16, 448 kb/s (default)
 (forced)
 Stream #0:2(ger): Audio: ac3, 48000 Hz, 5.1(side), s16, 448 kb/s (forced)
 Stream #0:3(ger): Audio: ac3, 48000 Hz, 5.1(side), s16, 448 kb/s
 Stream #0:4(ger): Subtitle: dvd_subtitle (default)
 Stream #0:5(ger): Subtitle: dvd_subtitle (forced)
 Stream #0:6(ger): Subtitle: dvd_subtitle

 2: ffmpeg -i test_ffmpeg_orig.mkv 2>&1 | grep Stream
 Stream #0:0: Video: h264 (High), yuv420p, 720x576 [SAR 64:45 DAR 16:9], 25
 fps, 25 tbr, 1k tbn, 50 tbc (default)
 Stream #0:1(ger): Audio: ac3, 48000 Hz, 5.1(side), s16, 448 kb/s (default)
 Stream #0:2(ger): Audio: ac3, 48000 Hz, 5.1(side), s16, 448 kb/s
 Stream #0:3(ger): Audio: ac3, 48000 Hz, 5.1(side), s16, 448 kb/s (default)
 Stream #0:4(ger): Subtitle: dvd_subtitle (default)
 Stream #0:5(ger): Subtitle: dvd_subtitle
 Stream #0:6(ger): Subtitle: dvd_subtitle (default)

 3: ffmpeg -i test_ffmpeg_forced_after.mkv 2>&1 | grep Stream
 Stream #0:0: Video: h264 (High), yuv420p, 720x576 [SAR 64:45 DAR 16:9], 25
 fps, 25 tbr, 1k tbn, 50 tbc (default)
 Stream #0:1(ger): Audio: ac3, 48000 Hz, 5.1(side), s16, 448 kb/s (default)
 (forced)
 Stream #0:2(ger): Audio: ac3, 48000 Hz, 5.1(side), s16, 448 kb/s (forced)
 Stream #0:3(ger): Audio: ac3, 48000 Hz, 5.1(side), s16, 448 kb/s (default)
 Stream #0:4(ger): Subtitle: dvd_subtitle (default)
 Stream #0:5(ger): Subtitle: dvd_subtitle (forced)
 Stream #0:6(ger): Subtitle: dvd_subtitle (default)

 4: ffmpeg -i test_ffmpeg_forced_before.mkv 2>&1 | grep Stream
 Stream #0:0: Video: h264 (High), yuv420p, 720x576 [SAR 64:45 DAR 16:9], 25
 fps, 25 tbr, 1k tbn, 50 tbc (default)
 Stream #0:1(ger): Audio: ac3, 48000 Hz, 5.1(side), s16, 448 kb/s (default)
 (forced)
 Stream #0:2(ger): Audio: ac3, 48000 Hz, 5.1(side), s16, 448 kb/s (forced)
 Stream #0:3(ger): Audio: ac3, 48000 Hz, 5.1(side), s16, 448 kb/s
 Stream #0:4(ger): Subtitle: dvd_subtitle (default)
 Stream #0:5(ger): Subtitle: dvd_subtitle (forced)
 Stream #0:6(ger): Subtitle: dvd_subtitle

-- 
Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/1815>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list