#include "third_party/skia/include/core/SkSurface.h"
#include "ui/gfx/gpu_memory_buffer.h"
+#if defined(OS_TIZEN_TV_PRODUCT)
+#include "third_party/blink/renderer/modules/mediastream/media_stream_video_track.h"
+#endif
+
namespace WTF {
// Template specialization of [1], needed to be able to pass callbacks
// that have ScopedWebCallbacks paramaters across threads.
// it back from the GPU.
const bool is_readable = frame->format() == media::PIXEL_FORMAT_I420 ||
frame->format() == media::PIXEL_FORMAT_I420A ||
+#if defined(OS_TIZEN_TV_PRODUCT) && defined(TIZEN_VIDEO_HOLE)
+ frame->storage_type() == media::VideoFrame::STORAGE_HOLE ||
+#endif
+#if defined(OS_TIZEN_TV_PRODUCT) && defined(TIZEN_TBM_SUPPORT)
+ frame->format() == media::PIXEL_FORMAT_TBM_INTER_PROCESS_BUFFER ||
+#endif
(frame->format() == media::PIXEL_FORMAT_NV12 &&
frame->HasGpuMemoryBuffer());
if (!is_readable) {
NOTREACHED();
}
gmb->Unmap();
- } else {
+ }
+#if defined(OS_TIZEN_TV_PRODUCT) && defined(TIZEN_TBM_SUPPORT)
+ else if (frame->format() == media::PIXEL_FORMAT_TBM_INTER_PROCESS_BUFFER) {
+ switch (destination_pixel_format) {
+ case libyuv::FOURCC_ABGR:
+ libyuv::NV12ToABGR(frame->visible_data(media::VideoFrame::kYPlane),
+ frame->stride(media::VideoFrame::kYPlane),
+ frame->visible_data(media::VideoFrame::kUVPlane),
+ frame->stride(media::VideoFrame::kUVPlane),
+ destination_plane, destination_stride,
+ destination_width, destination_height);
+ break;
+ case libyuv::FOURCC_ARGB:
+ libyuv::NV12ToARGB(frame->visible_data(media::VideoFrame::kYPlane),
+ frame->stride(media::VideoFrame::kYPlane),
+ frame->visible_data(media::VideoFrame::kUVPlane),
+ frame->stride(media::VideoFrame::kUVPlane),
+ destination_plane, destination_stride,
+ destination_width, destination_height);
+ break;
+ default:
+ NOTREACHED();
+ }
+ }
+#endif
+#if defined(OS_TIZEN_TV_PRODUCT) && defined(TIZEN_VIDEO_HOLE)
+ else if (frame->storage_type() == media::VideoFrame::STORAGE_HOLE) {
+ // fill black
+ pixmap.erase(SkColorSetARGB(255, 0, 0, 0));
+ }
+#endif
+ else {
DCHECK(frame->format() == media::PIXEL_FORMAT_I420 ||
frame->format() == media::PIXEL_FORMAT_I420A);
libyuv::ConvertFromI420(frame->visible_data(media::VideoFrame::kYPlane),
return;
}
+#if defined(OS_TIZEN_TV_PRODUCT) && defined(TIZEN_TBM_SUPPORT)
+ // enable the espp callback for grabber sink
+ MediaStreamVideoTrack* track =
+ MediaStreamVideoTrack::From(component);
+ if (track)
+ track->OnWebRtcSendStreamUserDataEncoder(true);
+ else {
+ callbacks->OnError();
+ return;
+ }
+#endif
+
auto scoped_callbacks =
MakeScopedWebCallbacks(std::move(callbacks), WTF::Bind(&OnError));
#if defined(TIZEN_TBM_SUPPORT)
void MediaSourceESPlusPlayerCapi::EnableTbmBufferCallBack() {
+ if (decoded_frame_buffer_type_ ==
+ ESPLUSPLAYER_DECODED_VIDEO_FRAME_BUFFER_TYPE_SCALE) {
+ LOG_ID(INFO, GetPlayerId()) << "tbm buffer callback had enabled, skip it";
+ return;
+ }
#if TIZEN_VERSION_AT_LEAST(6, 0, 0) // FIXME:M94 bringup on 5.5 platform
if (use_subscaler_ && GetPlayerState() != ESPLUSPLAYER_STATE_NONE) {
decoded_frame_buffer_type_ =
<< player_error;
}
SetCallBackFrameSize(cb_frame_width_, cb_frame_height_);
+ } else {
+ LOG_ID(ERROR, GetPlayerId()) << "invalid player state";
}
#endif
}