[vlc-commits] vt: simplify h264/annexb start
Francois Cartegnie
git at videolan.org
Thu Sep 22 11:57:35 CEST 2016
vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Tue Sep 20 18:41:18 2016 +0200| [f856d4b066276a9ab3a94a1574c2690bd0e32415] | committer: Francois Cartegnie
vt: simplify h264/annexb start
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f856d4b066276a9ab3a94a1574c2690bd0e32415
---
modules/codec/videotoolbox.m | 37 +++++++++++++++++++++----------------
1 file changed, 21 insertions(+), 16 deletions(-)
diff --git a/modules/codec/videotoolbox.m b/modules/codec/videotoolbox.m
index a3eeb77..51ac7a5 100644
--- a/modules/codec/videotoolbox.m
+++ b/modules/codec/videotoolbox.m
@@ -382,19 +382,24 @@ static int StartVideoToolbox(decoder_t *p_dec, block_t *p_block)
uint8_t *p_alloc_buf = NULL;
int i_ret = 0;
- if (p_block == NULL) {
- /* we need to convert the SPS and PPS units we received from the
- * demuxer's avvC atom so we can process them further */
- if(h264_isavcC(p_dec->fmt_in.p_extra, p_dec->fmt_in.i_extra))
+ /* we need to convert the SPS and PPS units we received from the
+ * demuxer's avvC atom so we can process them further */
+ p_sys->b_is_avcc = h264_isavcC(p_dec->fmt_in.p_extra, p_dec->fmt_in.i_extra);
+ if(p_sys->b_is_avcc)
+ {
+ p_alloc_buf = h264_avcC_to_AnnexB_NAL(p_dec->fmt_in.p_extra,
+ p_dec->fmt_in.i_extra,
+ &i_buf,
+ &p_sys->i_nal_length_size);
+ p_buf = p_alloc_buf;
+ if(!p_alloc_buf)
{
- p_alloc_buf = h264_avcC_to_AnnexB_NAL(p_dec->fmt_in.p_extra,
- p_dec->fmt_in.i_extra,
- &i_buf,
- &p_sys->i_nal_length_size);
- p_buf = p_alloc_buf;
- p_sys->b_is_avcc = !!p_buf;
+ msg_Warn(p_dec, "invalid avc decoder configuration record");
+ return VLC_EGENERIC;
}
- } else {
+ }
+ else if(p_block)
+ {
/* we are mid-stream, let's have the h264_get helper see if it
* can find a NAL unit */
i_buf = p_block->i_buffer;
@@ -402,16 +407,16 @@ static int StartVideoToolbox(decoder_t *p_dec, block_t *p_block)
p_sys->i_nal_length_size = 4; /* default to 4 bytes */
i_ret = VLC_SUCCESS;
}
-
- uint8_t *p_sps_ab = NULL, *p_pps_ab = NULL, *p_ext_ab = NULL;
- size_t i_sps_absize = 0, i_pps_absize = 0, i_ext_absize = 0;
- if (!p_buf) {
- msg_Warn(p_dec, "no valid extradata or conversion failed");
+ else
+ {
+ assert_unreachable();
return VLC_EGENERIC;
}
/* get the SPS and PPS units from the NAL unit which is either
* part of the demuxer's avvC atom or the mid stream data block */
+ uint8_t *p_sps_ab = NULL, *p_pps_ab = NULL, *p_ext_ab = NULL;
+ size_t i_sps_absize = 0, i_pps_absize = 0, i_ext_absize = 0;
i_ret = h264_get_spspps(p_buf, i_buf,
&p_sps_ab, &i_sps_absize,
&p_pps_ab, &i_pps_absize,
More information about the vlc-commits
mailing list