libav:avviddec: Add videometa if there is no videometa in output buffer 18/308818/1 accepted/tizen/7.0/unified/20240404.011908
authorJeongmo Yang <jm80.yang@samsung.com>
Fri, 29 Mar 2024 03:07:06 +0000 (12:07 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Mon, 1 Apr 2024 11:14:19 +0000 (20:14 +0900)
- The buffer from internal pool in avviddec has video meta,
  but, the output buffer is not from internal pool in avviddec
  and it's from other buffer pool which is made in gst_video_decoder_decide_allocation_default().
  As a result, the output buffer does not have video meta.

[Version] 1.20.0-56
[Issue Type] Improvement

Change-Id: I678ec172fdd92eddfe1a281f23d81f4106489f15
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
packaging/gstreamer.spec
subprojects/gst-libav/ext/libav/gstavviddec.c
subprojects/gst-libav/meson.build

index 0142cc43261a4c000ddcf6e232d178af3f93e77c..c9beaea997cf3e48bfb438e252dc1e2016453ff6 100644 (file)
@@ -62,7 +62,7 @@
 
 Name:           %{_name}
 Version:        1.20.0
-Release:        55
+Release:        56
 Summary:        Streaming-Media Framework Runtime
 License:        LGPL-2.0+
 Group:          Multimedia/Framework
index f5197fbe143985ccc6bb9c17f49c87d4c27fd437..d0cb0933d8f77f6fe02ce671e79a48f4eca3bfac 100644 (file)
@@ -1871,6 +1871,21 @@ gst_ffmpegviddec_video_frame (GstFFMpegVidDec * ffmpegdec,
       GST_BUFFER_FLAG_SET (out_frame->output_buffer, GST_VIDEO_BUFFER_FLAG_TFF);
     }
   }
+#ifdef TIZEN_FEATURE_LIBAV_VIDEODECODER_ADD_VIDEOMETA
+  {
+    GstVideoMeta *vmeta = gst_buffer_get_video_meta (out_frame->output_buffer);
+    if (!vmeta) {
+      GstVideoInfo *out_info = &ffmpegdec->output_state->info;
+
+      GST_DEBUG_OBJECT (ffmpegdec, "add videometa for output buffer");
+
+      gst_buffer_add_video_meta_full (out_frame->output_buffer, GST_VIDEO_FRAME_FLAG_NONE,
+          GST_VIDEO_INFO_FORMAT (out_info),
+          GST_VIDEO_INFO_WIDTH (out_info), GST_VIDEO_INFO_HEIGHT (out_info),
+          GST_VIDEO_INFO_N_PLANES (out_info), out_info->offset, out_info->stride);
+    }
+  }
+#endif /* TIZEN_FEATURE_LIBAV_VIDEODECODER_ADD_VIDEOMETA */
   *ret =
       gst_video_decoder_finish_frame (GST_VIDEO_DECODER (ffmpegdec), out_frame);
 
index 08473fd6e085b3d30540bd97942f3645e109f4d2..7589e952b6690a2d6c8581354f002851c8f01c15 100644 (file)
@@ -168,6 +168,7 @@ if get_option('tv-profile')
 cdata.set ('TIZEN_PRODUCT_TV', true)
 endif
 cdata.set ('TIZEN_FEATURE_LIBAV', true)
+cdata.set ('TIZEN_FEATURE_LIBAV_VIDEODECODER_ADD_VIDEOMETA', true)
 
 warning_flags = [
   '-Wmissing-declarations',