From: Eunhye Choi Date: Mon, 12 May 2025 06:22:20 +0000 (+0900) Subject: Consider the endianness when export video frame X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d3cedd5e5106f498dc74f64ba98c4fc1a0af9dad;p=platform%2Fcore%2Fmultimedia%2Ftrackrenderer.git Consider the endianness when export video frame [Version] 0.0.59 - In Gstreamer, pixel data is stored in memory in a fixed byte order regardless of the system's endianness. Therefore, the correct format must be set before passing frame to the rendering system. Change-Id: If1f59dfe5b0bec0131a462097b47bd6cd486af1a --- diff --git a/packaging/libtrackrenderer.spec b/packaging/libtrackrenderer.spec index bdbd8a7..a0e21ca 100644 --- a/packaging/libtrackrenderer.spec +++ b/packaging/libtrackrenderer.spec @@ -1,6 +1,6 @@ Name: libtrackrenderer Summary: new multimedia streaming player trackrenderer -Version: 0.0.58 +Version: 0.0.59 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/trackrenderer.cpp b/src/trackrenderer.cpp index 5f0f9a6..ceceead 100644 --- a/src/trackrenderer.cpp +++ b/src/trackrenderer.cpp @@ -196,12 +196,19 @@ uint32_t ConvertToTbmFormat(const gchar *data) { case GST_STR_FOURCC("S420"): case GST_STR_FOURCC("I420"): return TBM_FORMAT_YUV420; +#if G_BYTE_ORDER == G_BIG_ENDIAN case GST_STR_FOURCC("BGRA"): + case GST_STR_FOURCC("SR32"): return TBM_FORMAT_BGRA8888; case GST_STR_FOURCC("BGRx"): return TBM_FORMAT_BGRX8888; +#else + case GST_STR_FOURCC("BGRA"): case GST_STR_FOURCC("SR32"): return TBM_FORMAT_ARGB8888; + case GST_STR_FOURCC("BGRx"): + return TBM_FORMAT_XRGB8888; +#endif default: TRACKRENDERER_ERROR("Not supported format %" GST_FOURCC_FORMAT, GST_FOURCC_ARGS(fourcc)); @@ -281,8 +288,8 @@ tbm_surface_h CreateTbmSurfaceWithBuffer(GstBuffer* buffer, GstCaps* caps) { } BOOST_SCOPE_EXIT_END - TRACKRENDERER_INFO("width %d, height %d, size %" G_GSIZE_FORMAT ", bo_size %d", - width, height, mapinfo.size, bo_size); + TRACKRENDERER_INFO("format %s, bo format 0x%X, width %d, height %d, size %" G_GSIZE_FORMAT ", bo_size %d", + string_format, bo_format, width, height, mapinfo.size, bo_size); unsigned char* src = NULL; unsigned char* dest = NULL; @@ -321,6 +328,7 @@ tbm_surface_h CreateTbmSurfaceWithBuffer(GstBuffer* buffer, GstCaps* caps) { case TBM_FORMAT_BGRA8888: case TBM_FORMAT_BGRX8888: case TBM_FORMAT_ARGB8888: + case TBM_FORMAT_XRGB8888: { GstVideoMeta *vmeta = gst_buffer_get_video_meta(buffer); int src_stride = (vmeta) ? (vmeta->stride[0]) : (width * 4);