#include "base/logging.h"
#include "ppapi/proxy/video_frame_resource.h"
-#include "ppapi/shared_impl/media_stream_frame.h"
+#include "ppapi/shared_impl/media_stream_buffer.h"
#include "ppapi/shared_impl/var.h"
namespace ppapi {
if (has_ended())
return PP_OK;
- DCHECK_GE(frame_resource->GetFrameBufferIndex(), 0);
+ DCHECK_GE(frame_resource->GetBufferIndex(), 0);
- SendEnqueueFrameMessageToHost(frame_resource->GetFrameBufferIndex());
+ SendEnqueueBufferMessageToHost(frame_resource->GetBufferIndex());
frame_resource->Invalidate();
return PP_OK;
}
MediaStreamTrackResourceBase::CloseInternal();
}
-void MediaStreamVideoTrackResource::OnNewFrameEnqueued() {
- if (TrackedCallback::IsPending(get_frame_callback_)) {
- *get_frame_output_ = GetVideoFrame();
- get_frame_output_ = NULL;
- scoped_refptr<TrackedCallback> callback;
- callback.swap(get_frame_callback_);
- callback->Run(PP_OK);
- }
+void MediaStreamVideoTrackResource::OnNewBufferEnqueued() {
+ if (!TrackedCallback::IsPending(get_frame_callback_))
+ return;
+
+ *get_frame_output_ = GetVideoFrame();
+ int32_t result = *get_frame_output_ ? PP_OK : PP_ERROR_FAILED;
+ get_frame_output_ = NULL;
+ scoped_refptr<TrackedCallback> callback;
+ callback.swap(get_frame_callback_);
+ callback->Run(result);
}
PP_Resource MediaStreamVideoTrackResource::GetVideoFrame() {
- int32_t index = frame_buffer()->DequeueFrame();
+ int32_t index = buffer_manager()->DequeueBuffer();
if (index < 0)
return 0;
- MediaStreamFrame* frame = frame_buffer()->GetFramePointer(index);
+
+ MediaStreamBuffer* buffer = buffer_manager()->GetBufferPointer(index);
+ DCHECK(buffer);
scoped_refptr<VideoFrameResource> resource =
- new VideoFrameResource(pp_instance(), index, frame);
+ new VideoFrameResource(pp_instance(), index, buffer);
// Add |pp_resource()| and |resource| into |frames_|.
// |frames_| uses scoped_ptr<> to hold a ref of |resource|. It keeps the
// resource alive.