TRACKRENDERER_ENTER;
#endif
- DecodedVideoPacket packet;
auto trackrenderer = static_cast<TrackRenderer*>(userdata);
+ if ((trackrenderer->decoded_buffer_type_ == DecodedVideoFrameBufferType::kNone) ||
+ (trackrenderer->decoded_buffer_type_ == DecodedVideoFrameBufferType::kScale)) {
+ TRACKRENDERER_ERROR("Not supported DecodedVideoFrameBufferType(%d)",
+ static_cast<int>(trackrenderer->decoded_buffer_type_));
+ return;
+ }
+
GstMemory* mem = gst_buffer_peek_memory(buffer, 0);
- tbm_surface_h tbm_surf;
+ tbm_surface_h tbm_surf = nullptr;
+ DecodedVideoPacket packet;
if (gst_is_tizen_memory(mem)) {
- tbm_surf = (tbm_surface_h)gst_tizen_memory_get_surface(mem);
- tbm_surface_internal_ref(tbm_surf);
- packet.buffer_addr = gst_buffer_ref(buffer);
+ if ((trackrenderer->decoded_buffer_type_ == DecodedVideoFrameBufferType::kReference) ||
+ (trackrenderer->decoded_buffer_type_ == DecodedVideoFrameBufferType::kManualCopy)) {
+ tbm_surf = (tbm_surface_h)gst_tizen_memory_get_surface(mem);
+ tbm_surface_internal_ref(tbm_surf);
+ packet.buffer_addr = gst_buffer_ref(buffer);
+ } else if (trackrenderer->decoded_buffer_type_ == DecodedVideoFrameBufferType::kCopy) {
+ tbm_surf = internal::CopyTbmSurface(static_cast<tbm_surface_h>(gst_tizen_memory_get_surface(mem)));
+ }
} else {
auto caps = gstguard::make_guard(gst_pad_get_current_caps(pad));
tbm_surf = internal::CreateTbmSurfaceWithBuffer(mem, caps.get());