[FFmpeg-cvslog] r21517 - in trunk/libavcodec: avcodec.h h264.c h264_parser.c

cehoyos subversion
Thu Jan 28 21:57:29 CET 2010


Author: cehoyos
Date: Thu Jan 28 21:57:29 2010
New Revision: 21517

Log:
Export H264 profile and level in AVCodecContext.

Patch by Rafa?l Carr?, rafael D carre A gmail

Modified:
   trunk/libavcodec/avcodec.h
   trunk/libavcodec/h264.c
   trunk/libavcodec/h264_parser.c

Modified: trunk/libavcodec/avcodec.h
==============================================================================
--- trunk/libavcodec/avcodec.h	Thu Jan 28 21:15:19 2010	(r21516)
+++ trunk/libavcodec/avcodec.h	Thu Jan 28 21:57:29 2010	(r21517)
@@ -30,7 +30,7 @@
 #include "libavutil/avutil.h"
 
 #define LIBAVCODEC_VERSION_MAJOR 52
-#define LIBAVCODEC_VERSION_MINOR 48
+#define LIBAVCODEC_VERSION_MINOR 49
 #define LIBAVCODEC_VERSION_MICRO  0
 
 #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
@@ -2123,11 +2123,21 @@ typedef struct AVCodecContext {
      */
      int profile;
 #define FF_PROFILE_UNKNOWN -99
+
 #define FF_PROFILE_AAC_MAIN 0
 #define FF_PROFILE_AAC_LOW  1
 #define FF_PROFILE_AAC_SSR  2
 #define FF_PROFILE_AAC_LTP  3
 
+#define FF_PROFILE_H264_BASELINE    66
+#define FF_PROFILE_H264_MAIN        77
+#define FF_PROFILE_H264_EXTENDED    88
+#define FF_PROFILE_H264_HIGH        100
+#define FF_PROFILE_H264_HIGH_10     110
+#define FF_PROFILE_H264_HIGH_422    122
+#define FF_PROFILE_H264_HIGH_444    244
+#define FF_PROFILE_H264_CAVLC_444   44
+
     /**
      * level
      * - encoding: Set by user.

Modified: trunk/libavcodec/h264.c
==============================================================================
--- trunk/libavcodec/h264.c	Thu Jan 28 21:15:19 2010	(r21516)
+++ trunk/libavcodec/h264.c	Thu Jan 28 21:57:29 2010	(r21517)
@@ -2527,6 +2527,9 @@ static int decode_nal_units(H264Context 
             if((err = decode_slice_header(hx, h)))
                break;
 
+            avctx->profile = hx->sps.profile_idc;
+            avctx->level   = hx->sps.level_idc;
+
             if (s->avctx->hwaccel && h->current_slice == 1) {
                 if (s->avctx->hwaccel->start_frame(s->avctx, NULL, 0) < 0)
                     return -1;
@@ -2560,6 +2563,9 @@ static int decode_nal_units(H264Context 
             if ((err = decode_slice_header(hx, h)) < 0)
                 break;
 
+            avctx->profile = hx->sps.profile_idc;
+            avctx->level   = hx->sps.level_idc;
+
             hx->s.data_partitioning = 1;
 
             break;

Modified: trunk/libavcodec/h264_parser.c
==============================================================================
--- trunk/libavcodec/h264_parser.c	Thu Jan 28 21:15:19 2010	(r21516)
+++ trunk/libavcodec/h264_parser.c	Thu Jan 28 21:57:29 2010	(r21517)
@@ -185,6 +185,9 @@ static inline int parse_nal_units(AVCode
             h->sps = *h->sps_buffers[h->pps.sps_id];
             h->frame_num = get_bits(&h->s.gb, h->sps.log2_max_frame_num);
 
+            avctx->profile = h->sps.profile_idc;
+            avctx->level   = h->sps.level_idc;
+
             if(h->sps.frame_mbs_only_flag){
                 h->s.picture_structure= PICT_FRAME;
             }else{



More information about the ffmpeg-cvslog mailing list