[FFmpeg-devel] [PATCH 1/4] lavc/h264: move green meta logging out of the sei decoding

Clément Bœsch u at pkh.me
Mon Jun 13 23:02:00 CEST 2016


This will simplify the next Libav merge where SEI decoding doesn't have
access to the debug level anymore.
---
 libavcodec/h264.c     | 30 ++++++++++++++++++++++++++++++
 libavcodec/h264_sei.c | 33 ---------------------------------
 2 files changed, 30 insertions(+), 33 deletions(-)

diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index 367f6bf..46eaec2 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -959,6 +959,34 @@ static int get_last_needed_nal(H264Context *h)
     return nals_needed;
 }
 
+static void debug_green_metadata(const GreenMetaData *gm, void *logctx)
+{
+    av_log(logctx, AV_LOG_DEBUG, "Green Metadata Info SEI message\n");
+    av_log(logctx, AV_LOG_DEBUG, "  green_metadata_type: %d\n", gm->green_metadata_type);
+
+    if (gm->green_metadata_type == 0) {
+        av_log(logctx, AV_LOG_DEBUG, "  green_metadata_period_type: %d\n", gm->period_type);
+
+        if (gm->period_type == 2)
+            av_log(logctx, AV_LOG_DEBUG, "  green_metadata_num_seconds: %d\n", gm->num_seconds);
+        else if (gm->period_type == 3)
+            av_log(logctx, AV_LOG_DEBUG, "  green_metadata_num_pictures: %d\n", gm->num_pictures);
+
+        av_log(logctx, AV_LOG_DEBUG, "  SEI GREEN Complexity Metrics: %f %f %f %f\n",
+               (float)gm->percent_non_zero_macroblocks/255,
+               (float)gm->percent_intra_coded_macroblocks/255,
+               (float)gm->percent_six_tap_filtering/255,
+               (float)gm->percent_alpha_point_deblocking_instance/255);
+
+    } else if (gm->green_metadata_type == 1) {
+        av_log(logctx, AV_LOG_DEBUG, "  xsd_metric_type: %d\n", gm->xsd_metric_type);
+
+        if (gm->xsd_metric_type == 0)
+            av_log(logctx, AV_LOG_DEBUG, "  xsd_metric_value: %f\n",
+                   (float)gm->xsd_metric_value/100);
+    }
+}
+
 static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size,
                             int parse_extradata)
 {
@@ -1141,6 +1169,8 @@ again:
         case NAL_SEI:
             h->gb = nal->gb;
             ret = ff_h264_decode_sei(h);
+            if (avctx->debug & FF_DEBUG_GREEN_MD)
+                debug_green_metadata(&h->sei_green_metadata, h->avctx);
             if (ret < 0 && (h->avctx->err_recognition & AV_EF_EXPLODE))
                 goto end;
             break;
diff --git a/libavcodec/h264_sei.c b/libavcodec/h264_sei.c
index 3c6d988..b23878c 100644
--- a/libavcodec/h264_sei.c
+++ b/libavcodec/h264_sei.c
@@ -365,33 +365,16 @@ static int decode_display_orientation(H264Context *h)
 
 static int decode_GreenMetadata(H264Context *h)
 {
-    if (h->avctx->debug & FF_DEBUG_GREEN_MD)
-        av_log(h->avctx, AV_LOG_DEBUG,          "Green Metadata Info SEI message\n");
-
     h->sei_green_metadata.green_metadata_type=get_bits(&h->gb, 8);
 
-    if (h->avctx->debug & FF_DEBUG_GREEN_MD)
-        av_log(h->avctx, AV_LOG_DEBUG,          "green_metadata_type                            = %d\n",
-               h->sei_green_metadata.green_metadata_type);
-
     if (h->sei_green_metadata.green_metadata_type==0){
         h->sei_green_metadata.period_type=get_bits(&h->gb, 8);
 
-        if (h->avctx->debug & FF_DEBUG_GREEN_MD)
-            av_log(h->avctx, AV_LOG_DEBUG,      "green_metadata_period_type                     = %d\n",
-                   h->sei_green_metadata.period_type);
-
         if (h->sei_green_metadata.period_type==2){
             h->sei_green_metadata.num_seconds = get_bits(&h->gb, 16);
-            if (h->avctx->debug & FF_DEBUG_GREEN_MD)
-                av_log(h->avctx, AV_LOG_DEBUG,  "green_metadata_num_seconds                     = %d\n",
-                       h->sei_green_metadata.num_seconds);
         }
         else if (h->sei_green_metadata.period_type==3){
             h->sei_green_metadata.num_pictures = get_bits(&h->gb, 16);
-            if (h->avctx->debug & FF_DEBUG_GREEN_MD)
-                av_log(h->avctx, AV_LOG_DEBUG,  "green_metadata_num_pictures                    = %d\n",
-                       h->sei_green_metadata.num_pictures);
         }
 
         h->sei_green_metadata.percent_non_zero_macroblocks=get_bits(&h->gb, 8);
@@ -399,25 +382,9 @@ static int decode_GreenMetadata(H264Context *h)
         h->sei_green_metadata.percent_six_tap_filtering=get_bits(&h->gb, 8);
         h->sei_green_metadata.percent_alpha_point_deblocking_instance=get_bits(&h->gb, 8);
 
-        if (h->avctx->debug & FF_DEBUG_GREEN_MD)
-            av_log(h->avctx, AV_LOG_DEBUG,      "SEI GREEN Complexity Metrics                   = %f %f %f %f\n",
-                                           (float)h->sei_green_metadata.percent_non_zero_macroblocks/255,
-                                           (float)h->sei_green_metadata.percent_intra_coded_macroblocks/255,
-                                           (float)h->sei_green_metadata.percent_six_tap_filtering/255,
-                                           (float)h->sei_green_metadata.percent_alpha_point_deblocking_instance/255);
-
     }else if( h->sei_green_metadata.green_metadata_type==1){
         h->sei_green_metadata.xsd_metric_type=get_bits(&h->gb, 8);
         h->sei_green_metadata.xsd_metric_value=get_bits(&h->gb, 16);
-
-        if (h->avctx->debug & FF_DEBUG_GREEN_MD)
-            av_log(h->avctx, AV_LOG_DEBUG,      "xsd_metric_type                                = %d\n",
-                   h->sei_green_metadata.xsd_metric_type);
-        if ( h->sei_green_metadata.xsd_metric_type==0){
-            if (h->avctx->debug & FF_DEBUG_GREEN_MD)
-                av_log(h->avctx, AV_LOG_DEBUG,  "xsd_metric_value                               = %f\n",
-                       (float)h->sei_green_metadata.xsd_metric_value/100);
-        }
     }
 
     return 0;
-- 
2.8.3



More information about the ffmpeg-devel mailing list