Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(115)

Side by Side Diff: media/gpu/vt_video_decode_accelerator_mac.cc

Issue 2525143002: media: Destroy VTVDA session on the decoder thread. (Closed)
Patch Set: Be as cautious as possible. Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/gpu/vt_video_decode_accelerator_mac.h" 5 #include "media/gpu/vt_video_decode_accelerator_mac.h"
6 6
7 #include <CoreVideo/CoreVideo.h> 7 #include <CoreVideo/CoreVideo.h>
8 #include <OpenGL/CGLIOSurface.h> 8 #include <OpenGL/CGLIOSurface.h>
9 #include <OpenGL/gl.h> 9 #include <OpenGL/gl.h>
10 #include <stddef.h> 10 #include <stddef.h>
(...skipping 797 matching lines...) Expand 10 before | Expand all | Expand 10 after
808 task_queue_.push(task); 808 task_queue_.push(task);
809 ProcessWorkQueues(); 809 ProcessWorkQueues();
810 } 810 }
811 811
812 void VTVideoDecodeAccelerator::FlushTask(TaskType type) { 812 void VTVideoDecodeAccelerator::FlushTask(TaskType type) {
813 DVLOG(3) << __func__; 813 DVLOG(3) << __func__;
814 DCHECK(decoder_thread_.task_runner()->BelongsToCurrentThread()); 814 DCHECK(decoder_thread_.task_runner()->BelongsToCurrentThread());
815 815
816 FinishDelayedFrames(); 816 FinishDelayedFrames();
817 817
818 // Always queue a task, even if FinishDelayedFrames() fails, so that 818 if (type == TASK_DESTROY && session_) {
819 // destruction always completes. 819 // Destroy the decoding session before returning from the decoder thread.
820 VTDecompressionSessionInvalidate(session_);
821 session_.reset();
822 }
823
824 // Queue a task even if flushing fails, so that destruction always completes.
820 gpu_task_runner_->PostTask( 825 gpu_task_runner_->PostTask(
821 FROM_HERE, 826 FROM_HERE,
822 base::Bind(&VTVideoDecodeAccelerator::FlushDone, weak_this_, type)); 827 base::Bind(&VTVideoDecodeAccelerator::FlushDone, weak_this_, type));
823 } 828 }
824 829
825 void VTVideoDecodeAccelerator::FlushDone(TaskType type) { 830 void VTVideoDecodeAccelerator::FlushDone(TaskType type) {
826 DVLOG(3) << __func__; 831 DVLOG(3) << __func__;
827 DCHECK(gpu_task_runner_->BelongsToCurrentThread()); 832 DCHECK(gpu_task_runner_->BelongsToCurrentThread());
828 task_queue_.push(Task(type)); 833 task_queue_.push(Task(type));
829 ProcessWorkQueues(); 834 ProcessWorkQueues();
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after
1174 SupportedProfile profile; 1179 SupportedProfile profile;
1175 profile.profile = supported_profile; 1180 profile.profile = supported_profile;
1176 profile.min_resolution.SetSize(16, 16); 1181 profile.min_resolution.SetSize(16, 16);
1177 profile.max_resolution.SetSize(4096, 2160); 1182 profile.max_resolution.SetSize(4096, 2160);
1178 profiles.push_back(profile); 1183 profiles.push_back(profile);
1179 } 1184 }
1180 return profiles; 1185 return profiles;
1181 } 1186 }
1182 1187
1183 } // namespace media 1188 } // namespace media
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698