don't release tbm surface if h/w codec case, add STV0 72/319972/1
authorEunhwa Kang <e.kang@samsung.com>
Fri, 27 Sep 2024 00:29:34 +0000 (09:29 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Wed, 6 Nov 2024 00:40:06 +0000 (09:40 +0900)
Change-Id: Ief66d638f32f95fd115934bbce32cbc44797d8cf

src/webrtc_display.c

index ba00d7d21f88304e68be4152c50598a58df0c539..07ccb26ce25e2e514f784f25660efe9dfaddb686 100644 (file)
@@ -57,6 +57,7 @@ static int __get_pixel_format(unsigned int fourcc)
        switch (fourcc) {
        case GST_MAKE_FOURCC('S', 'N', '1', '2'):
        case GST_MAKE_FOURCC('N', 'V', '1', '2'):
+       case GST_MAKE_FOURCC('S', 'T', 'V', '0'):
                return MM_PIXEL_FORMAT_NV12;
        case GST_MAKE_FOURCC('S', 'T', '1', '2'):
                return MM_PIXEL_FORMAT_NV12T;
@@ -492,18 +493,19 @@ static int __media_packet_finalize_cb(media_packet_h m_packet, int error_code, v
        RET_VAL_IF(m_packet == NULL, MEDIA_PACKET_FINALIZE, "m_packet is NULL");
        RET_VAL_IF(finalize_data == NULL, MEDIA_PACKET_FINALIZE, "finalize_data is NULL");
 
-       if (media_packet_get_tbm_surface(m_packet, &ts) != MEDIA_PACKET_ERROR_NONE)
+       if (finalize_data->info->internal_buffer) {
+               gst_buffer_unref((GstBuffer *)finalize_data->info->internal_buffer);
+       } else {  /* sw codec */
+               if (media_packet_get_tbm_surface(m_packet, &ts) != MEDIA_PACKET_ERROR_NONE)
                LOG_ERROR("failed to media_packet_get_tbm_surface()");
 
-       if (ts) {
-               LOG_VERBOSE("tbm surface[%p] is destroyed", ts);
-               tbm_surface_destroy(ts);
-       }
+               if (ts) {
+                       LOG_VERBOSE("tbm surface[%p] is destroyed", ts);
+                       tbm_surface_destroy(ts);
+               }
 
-       if (finalize_data->info->internal_buffer) {
-               gst_buffer_unref((GstBuffer *)finalize_data->info->internal_buffer);
-       } else if (finalize_data->info->bo[0]) {  /* sw codec */
-               _release_tbm_bo(finalize_data->tbm, finalize_data->info->bo[0]);
+               if (finalize_data->info->bo[0])
+                       _release_tbm_bo(finalize_data->tbm, finalize_data->info->bo[0]);
        }
 
        g_free(finalize_data->info);