On Mon, Nov 30, 2015 at 10:57 AM wm4 <nfx...@googlemail.com> wrote: > On Mon, 30 Nov 2015 18:31:56 +0000 > Aaron Colwell <acolw...@google.com> wrote: > > > Hi, > > Can I get a review for this please? It has been a week since I sent out > > this patch and I haven't gotten any real feedback about the changes. I've > > attached a new copy that has been rebased to HEAD. If I need to be doing > > something different, please let me know so I can make progress on this. > > > > Thanks, > > Aaron > > > > On Wed, Nov 25, 2015 at 4:40 PM Aaron Colwell <acolw...@google.com> > wrote: > > > > > On Tue, Nov 24, 2015 at 10:43 AM Kirill Gavrilov <gavr.m...@gmail.com> > > > wrote: > > > > > >> On Mon, Nov 23, 2015 at 11:37 PM, Aaron Colwell <acolw...@google.com> > > >> wrote: > > >> > > >> > matroskaenc.c applies divisors to the display width/height when > > >> generating > > >> > stereo content. This patch adds the corresponding multipliers to > > >> > matroskadec.c > > >> > so that the original sample aspect ratio can be recovered. > > >> > > >> > > >> Just to link this patch with Matroska Specification notes: > > >> http://www.matroska.org/technical/specs/notes.html#3D > > >> > > >> > The pixel count of the track (PixelWidth/PixelHeight) should be the > raw > > >> > amount of pixels (for example 3840x1080 for full HD side by side) > > >> > and the DisplayWidth/Height in pixels should be the amount of > pixels for > > >> > one plane (1920x1080 for that full HD stream). > > >> > > > >> > > > > > > Is this intended to be a call to action or are you just adding > information > > > to this particular thread? I'd like to get the change reviewed so I can > > > determine whether I need to make any other changes. > > > > > > This change basically allows 'ffmpeg -i blah.mkv foo.mkv ; ffprobe > > > foo.mkv' to show that foo.mkv has the same SAR and DAR as blah.mkv when > > > blah.mkv contains stereo content. Without this patch the SAR & DAR get > > > smaller based on whichever dimension is halved by the stereo layout. > > > > > > Hope this helps, > > > Aaron > > > > > > > > Are you sure matroskadec is wrong and not matroskaenc? >
Thanks for the response. Yes. I believe matroskadec is wrong. From what I can tell matroskaenc is writing the correct information to the file. The issue is that matroskadec does not appear to be doing the right thing to restore the same state that was present when the file was written. Specifically sample_aspect_ratio does not get restored to the value it had during writing. Here is an example using a SIDE_BY_SIDE_RL file that has PixelWidthxPixelHeight of "640x360" and a DisplayWidthxDisplayHeight of "640x360" ./ffmpeg -y -i fp3_RL_640x360.webm blah.webm && ./ffprobe blah.webm ----[ffmpeg output]---- Input #0, matroska,webm, from 'fp3_RL_640x360.webm': Metadata: encoder : google Duration: 00:00:04.88, start: 0.000000, bitrate: 208 kb/s Stream #0:0: Video: vp8, yuv420p, 640x360, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 1k tbn, 1k tbc (default) Metadata: stereo_mode : right_left Side data: stereo3d: side by side (inverted) [libvpx-vp9 @ 0x33dcfa0] v1.4.0-729-g8bf791e Output #0, webm, to 'blah.webm': Metadata: encoder : Lavf57.19.100 Stream #0:0: Video: vp9 (libvpx-vp9), yuv420p, 640x360 [SAR 1:1 DAR 16:9], q=-1--1, 200 kb/s, 23.98 fps, 1k tbn, 23.98 tbc (default) Metadata: stereo_mode : right_left encoder : Lavc57.16.101 libvpx-vp9 Side data: stereo3d: side by side (inverted) Stream mapping: Stream #0:0 -> #0:0 (vp8 (native) -> vp9 (libvpx-vp9)) ----[end of ffmpeg output]---- --[ffprobe output]-- Input #0, matroska,webm, from 'blah.webm': Metadata: encoder : Lavf57.19.100 Duration: 00:00:04.88, start: 0.000000, bitrate: 100 kb/s Stream #0:0: Video: vp9 (Profile 0), yuv420p(tv), 640x360, SAR 1:2 DAR 8:9, 23.98 fps, 23.98 tbr, 1k tbn, 1k tbc (default) Metadata: stereo_mode : right_left Side data: stereo3d: side by side (inverted) --[end of ffprobe output]-- Note that ffprobe SAR and DAR do not match what ffmpeg thought it wrote. This is what I'm fixing. With my fix, ffprobe reports what ffmpeg said it wrote. Here is what the output looks like with my change: ---[ffmpeg output]--- Input #0, matroska,webm, from 'fp3_RL_640x360.webm': Metadata: encoder : google Duration: 00:00:04.88, start: 0.000000, bitrate: 208 kb/s Stream #0:0: Video: vp8, yuv420p, 640x360, SAR 2:1 DAR 32:9, 23.98 fps, 23.98 tbr, 1k tbn, 1k tbc (default) Metadata: stereo_mode : right_left Side data: stereo3d: side by side (inverted) [libvpx-vp9 @ 0x1fb0fa0] v1.4.0-729-g8bf791e Output #0, webm, to 'blah.webm': Metadata: encoder : Lavf57.19.100 Stream #0:0: Video: vp9 (libvpx-vp9), yuv420p, 640x360 [SAR 2:1 DAR 32:9], q=-1--1, 200 kb/s, 23.98 fps, 1k tbn, 23.98 tbc (default) Metadata: stereo_mode : right_left encoder : Lavc57.16.101 libvpx-vp9 Side data: stereo3d: side by side (inverted) Stream mapping: Stream #0:0 -> #0:0 (vp8 (native) -> vp9 (libvpx-vp9)) ---[End of ffmpeg output]--- ---[ffprobe output]-- Input #0, matroska,webm, from 'blah.webm': Metadata: encoder : Lavf57.19.100 Duration: 00:00:04.88, start: 0.000000, bitrate: 100 kb/s Stream #0:0: Video: vp9 (Profile 0), yuv420p(tv), 640x360, SAR 2:1 DAR 32:9, 23.98 fps, 23.98 tbr, 1k tbn, 1k tbc (default) Metadata: stereo_mode : right_left Side data: stereo3d: side by side (inverted) ---[end of ffprobe output]-- Note that ffmpeg & ffprobe now agree on what was written. Also note that this also causes the SAR to be set properly since PixelWidth == DisplayWidth in side-by-side mkv content means that you need to scale the width of each "side" by 2. I believe this is correct, but if I'm mistaken please help me see where I have gone wrong. > I suspect the change to matroskadec would make the behavior > inconsistent with vf_stereo3d in libavfilter. (But I'm not sure.) > I'm not sure I understand. Do you have a specific example I could try? I'm not very familiar with that code, but my initial read of it makes me believe that everything should still work ok because all I'm doing is making sure the sample_aspect_ratio is properly restored. Thanks for your help, Aaron > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel