[vlc-devel] [PATCH 1/4] decoder: Give packetizer aspect ratio to decoder.

Martin Storsjö martin at martin.st
Thu Feb 6 14:05:08 CET 2014


From: Julian Scheel <julian at jusst.de>

When the packetizer detects a valid pixel aspect ratio this should be
forwarded to the decoders input format. This is helpful for decoder modules
which do not expose the aspect ratio on their own.

Signed-off-by: Julian Scheel <julian at jusst.de>
---
IIRC the discussion last time ended at whether all of the struct
should be copied, or just these fields. For this use case either
is fine I think.

Should these fields always be copied, or only the first time?
As it currently is written, it disallows any updates of the
aspect ratio through this channel.
---
 src/input/decoder.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/src/input/decoder.c b/src/input/decoder.c
index d7caf2d..79a729d 100644
--- a/src/input/decoder.c
+++ b/src/input/decoder.c
@@ -1569,6 +1569,21 @@ static void DecoderProcessVideo( decoder_t *p_dec, block_t *p_block, bool b_flus
                 es_format_Clean( &p_dec->fmt_in );
                 es_format_Copy( &p_dec->fmt_in, &p_packetizer->fmt_out );
             }
+
+            /* If the packetizer provides aspect ratio information use it as
+             * long as the decoder itself provides no aspect ratio
+             * information. */
+            if( p_packetizer->fmt_out.video.i_sar_num > 0 &&
+                    p_packetizer->fmt_out.video.i_sar_den > 0 &&
+                    (p_dec->fmt_in.video.i_sar_num == 0 ||
+                     p_dec->fmt_in.video.i_sar_den == 0) )
+            {
+                p_dec->fmt_in.video.i_sar_num =
+                    p_packetizer->fmt_out.video.i_sar_num;
+                p_dec->fmt_in.video.i_sar_den=
+                    p_packetizer->fmt_out.video.i_sar_den;
+            }
+
             if( p_packetizer->pf_get_cc )
                 DecoderGetCc( p_dec, p_packetizer );
 
-- 
1.8.3.4 (Apple Git-47)




More information about the vlc-devel mailing list