Index: ppapi/examples/gles2/gles2.cc |
diff --git a/ppapi/examples/gles2/gles2.cc b/ppapi/examples/gles2/gles2.cc |
index 60c5bdf7a5ab16c4fd6dd6a482f9414e3b843004..a7e076eae60c5113dfcae5daf43f2da0dbd6ce31 100644 |
--- a/ppapi/examples/gles2/gles2.cc |
+++ b/ppapi/examples/gles2/gles2.cc |
@@ -58,15 +58,12 @@ class GLES2DemoInstance : public pp::Instance, public pp::Graphics3DClient_Dev, |
// pp::VideoDecoderClient_Dev implementation. |
virtual void ProvidePictureBuffers( |
- pp::VideoDecoder_Dev decoder, uint32_t req_num_of_bufs, |
- PP_Size dimensions, PP_PictureBufferType_Dev type); |
- virtual void DismissPictureBuffer( |
- pp::VideoDecoder_Dev decoder, int32_t picture_buffer_id); |
- virtual void PictureReady( |
- pp::VideoDecoder_Dev decoder, const PP_Picture_Dev& picture); |
- virtual void EndOfStream(pp::VideoDecoder_Dev decoder); |
- virtual void NotifyError( |
- pp::VideoDecoder_Dev decoder, PP_VideoDecodeError_Dev error); |
+ uint32_t req_num_of_bufs, PP_Size dimensions, |
+ PP_PictureBufferType_Dev type); |
+ virtual void DismissPictureBuffer(int32_t picture_buffer_id); |
+ virtual void PictureReady(const PP_Picture_Dev& picture); |
+ virtual void EndOfStream(); |
+ virtual void NotifyError(PP_VideoDecodeError_Dev error); |
private: |
enum { kNumConcurrentDecodes = 7 }; |
@@ -78,7 +75,6 @@ class GLES2DemoInstance : public pp::Instance, public pp::Graphics3DClient_Dev, |
void DecoderInitDone(int32_t result); |
void DecoderBitstreamDone(int32_t result, int bitstream_buffer_id); |
void DecoderFlushDone(int32_t result); |
- void DecoderAbortDone(int32_t result); |
// Decode helpers. |
void DecodeNextNALUs(); |
@@ -146,7 +142,7 @@ GLES2DemoInstance::GLES2DemoInstance(PP_Instance instance, pp::Module* module) |
} |
GLES2DemoInstance::~GLES2DemoInstance() { |
- delete video_decoder_; |
+ delete video_decoder_; // May be NULL, which is fine. |
delete surface_; |
delete context_; |
} |
@@ -194,9 +190,8 @@ void GLES2DemoInstance::DecoderFlushDone(int32_t result) { |
// Check that each bitstream buffer ID we handed to the decoder got handed |
// back to us. |
assert(bitstream_ids_at_decoder_.empty()); |
-} |
- |
-void GLES2DemoInstance::DecoderAbortDone(int32_t result) { |
+ delete video_decoder_; |
+ video_decoder_ = NULL; |
} |
static bool LookingAtNAL(const unsigned char* encoded, size_t pos) { |
@@ -256,7 +251,7 @@ void GLES2DemoInstance::DecodeNextNALU() { |
} |
void GLES2DemoInstance::ProvidePictureBuffers( |
- pp::VideoDecoder_Dev decoder, uint32_t req_num_of_bufs, PP_Size dimensions, |
+ uint32_t req_num_of_bufs, PP_Size dimensions, |
PP_PictureBufferType_Dev type) { |
std::vector<PP_GLESBuffer_Dev> buffers; |
for (uint32_t i = 0; i < req_num_of_bufs; i++) { |
@@ -270,16 +265,14 @@ void GLES2DemoInstance::ProvidePictureBuffers( |
video_decoder_->AssignGLESBuffers(buffers); |
} |
-void GLES2DemoInstance::DismissPictureBuffer( |
- pp::VideoDecoder_Dev decoder, int32_t picture_buffer_id) { |
+void GLES2DemoInstance::DismissPictureBuffer(int32_t picture_buffer_id) { |
PictureBufferMap::iterator it = buffers_by_id_.find(picture_buffer_id); |
assert(it != buffers_by_id_.end()); |
DeleteTexture(it->second.texture_id); |
buffers_by_id_.erase(it); |
} |
-void GLES2DemoInstance::PictureReady( |
- pp::VideoDecoder_Dev decoder, const PP_Picture_Dev& picture) { |
+void GLES2DemoInstance::PictureReady(const PP_Picture_Dev& picture) { |
if (first_frame_delivered_ticks_ == -1) |
assert((first_frame_delivered_ticks_ = core_if_->GetTimeTicks()) != -1); |
if (is_painting_) { |
@@ -292,11 +285,10 @@ void GLES2DemoInstance::PictureReady( |
Render(it->second); |
} |
-void GLES2DemoInstance::EndOfStream(pp::VideoDecoder_Dev decoder) { |
+void GLES2DemoInstance::EndOfStream() { |
} |
-void GLES2DemoInstance::NotifyError( |
- pp::VideoDecoder_Dev decoder, PP_VideoDecodeError_Dev error) { |
+void GLES2DemoInstance::NotifyError(PP_VideoDecodeError_Dev error) { |
} |
// This object is the global object representing this plugin library as long |
@@ -366,11 +358,12 @@ void GLES2DemoInstance::PaintFinished(int32_t result, int picture_buffer_id) { |
<< fps << ", with average ms/swap of: " << ms_per_swap |
<< std::endl; |
} |
- video_decoder_->ReusePictureBuffer(picture_buffer_id); |
+ if (video_decoder_) |
+ video_decoder_->ReusePictureBuffer(picture_buffer_id); |
while (!pictures_pending_paint_.empty() && !is_painting_) { |
PP_Picture_Dev picture = pictures_pending_paint_.front(); |
pictures_pending_paint_.pop_front(); |
- PictureReady(*video_decoder_, picture); |
+ PictureReady(picture); |
} |
} |