[FFmpeg-devel] [PATCH] avcodec/hevc_parser: use the old parser only when hevc decoder is available

James Almer jamrial at gmail.com
Mon Jul 13 19:14:18 CEST 2015


If it's not, then the new dependence-free parser will be used instead

Signed-off-by: James Almer <jamrial at gmail.com>
---
 configure                |  2 --
 libavcodec/hevc_parser.c | 10 +++++-----
 2 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/configure b/configure
index ac32a1f..88ee936 100755
--- a/configure
+++ b/configure
@@ -2441,8 +2441,6 @@ wmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel"
 # parsers
 h264_parser_select="h264_decoder"
 hevc_parser_select="golomb"
-#If ADVANCED_PARSER is enabled then the decoder is needed otherwise the next line can be removed
-hevc_parser_select="hevc_decoder"
 mpegvideo_parser_select="mpegvideo"
 mpeg4video_parser_select="error_resilience h263dsp mpeg_er mpegvideo qpeldsp"
 vc1_parser_select="mpegvideo startcode vc1_decoder"
diff --git a/libavcodec/hevc_parser.c b/libavcodec/hevc_parser.c
index 77ca017..fd879a6 100644
--- a/libavcodec/hevc_parser.c
+++ b/libavcodec/hevc_parser.c
@@ -30,7 +30,7 @@
 
 #define IS_IRAP_NAL(nal) (nal->type >= 16 && nal->type <= 23)
 
-#define ADVANCED_PARSER
+#define ADVANCED_PARSER CONFIG_HEVC_DECODER
 
 typedef struct HEVCParserContext {
     ParseContext pc;
@@ -40,11 +40,12 @@ typedef struct HEVCParserContext {
 
     int parsed_extradata;
 
-#ifdef ADVANCED_PARSER
+#if ADVANCED_PARSER
     HEVCContext h;
 #endif
 } HEVCParserContext;
 
+#if !ADVANCED_PARSER
 static int hevc_parse_slice_header(AVCodecParserContext *s, HEVCNAL *nal,
                                    AVCodecContext *avctx)
 {
@@ -81,7 +82,6 @@ static int hevc_parse_slice_header(AVCodecParserContext *s, HEVCNAL *nal,
     return 0;
 }
 
-#ifndef ADVANCED_PARSER
 static int parse_nal_units(AVCodecParserContext *s, const uint8_t *buf,
                            int buf_size, AVCodecContext *avctx)
 {
@@ -166,6 +166,7 @@ static int hevc_find_frame_end(AVCodecParserContext *s, const uint8_t *buf,
     return END_NOT_FOUND;
 }
 
+#if ADVANCED_PARSER
 /**
  * Parse NAL units of found picture and decode some basic information.
  *
@@ -174,7 +175,6 @@ static int hevc_find_frame_end(AVCodecParserContext *s, const uint8_t *buf,
  * @param buf buffer with field/frame data.
  * @param buf_size size of the buffer.
  */
-#ifdef ADVANCED_PARSER
 static inline int parse_nal_units(AVCodecParserContext *s, const uint8_t *buf,
                            int buf_size, AVCodecContext *avctx)
 {
@@ -418,7 +418,7 @@ static void hevc_parser_close(AVCodecParserContext *s)
     HEVCParserContext *ctx = s->priv_data;
     int i;
 
-#ifdef ADVANCED_PARSER
+#if ADVANCED_PARSER
     HEVCContext  *h  = &ctx->h;
     av_freep(&h->HEVClc);
 #endif
-- 
2.4.5



More information about the ffmpeg-devel mailing list