lavc/h264: move green meta logging out of the sei decoding
authorClément Bœsch <u@pkh.me>
Mon, 13 Jun 2016 19:41:53 +0000 (21:41 +0200)
committerClément Bœsch <u@pkh.me>
Tue, 14 Jun 2016 06:23:23 +0000 (08:23 +0200)
This will simplify the next Libav merge where SEI decoding doesn't have
access to the debug level anymore.

libavcodec/h264.c
libavcodec/h264_sei.c

index 367f6bf..46eaec2 100644 (file)
@@ -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;
index 3c6d988..b23878c 100644 (file)
@@ -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;