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

Side by Side Diff: media/mojo/common/mojo_decoder_buffer_converter.cc

Issue 2484763005: media: Support transporting 0-byte DecoderBuffer over mojo (Closed)
Patch Set: Created 4 years, 1 month 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/mojo/common/mojo_decoder_buffer_converter.h" 5 #include "media/mojo/common/mojo_decoder_buffer_converter.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 } 96 }
97 97
98 DCHECK(!read_cb_); 98 DCHECK(!read_cb_);
99 DCHECK(!media_buffer_); 99 DCHECK(!media_buffer_);
100 DCHECK_EQ(bytes_read_, 0u); 100 DCHECK_EQ(bytes_read_, 0u);
101 101
102 scoped_refptr<DecoderBuffer> media_buffer( 102 scoped_refptr<DecoderBuffer> media_buffer(
103 mojo_buffer.To<scoped_refptr<DecoderBuffer>>()); 103 mojo_buffer.To<scoped_refptr<DecoderBuffer>>());
104 DCHECK(media_buffer); 104 DCHECK(media_buffer);
105 105
106 if (media_buffer->end_of_stream()) { 106 // A non-EOS buffer can have zero size. See http://crbug.com/663438
107 if (media_buffer->end_of_stream() || media_buffer->data_size() == 0) {
chcunningham 2016/11/08 22:00:38 Could these be simplified to simply if (!media_buf
xhwang 2016/11/08 22:13:51 We can't call anything (including data_size()) if
107 std::move(read_cb).Run(media_buffer); 108 std::move(read_cb).Run(media_buffer);
108 return; 109 return;
109 } 110 }
110 111
111 // Read the data section of |media_buffer| from the pipe. 112 // Read the data section of |media_buffer| from the pipe.
112 read_cb_ = std::move(read_cb); 113 read_cb_ = std::move(read_cb);
113 media_buffer_ = std::move(media_buffer); 114 media_buffer_ = std::move(media_buffer);
114 ReadDecoderBufferData(); 115 ReadDecoderBufferData();
115 } 116 }
116 117
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 << ": Failed to write DecoderBuffer becuase the pipe is already closed"; 213 << ": Failed to write DecoderBuffer becuase the pipe is already closed";
213 return nullptr; 214 return nullptr;
214 } 215 }
215 216
216 DCHECK(!media_buffer_); 217 DCHECK(!media_buffer_);
217 DCHECK_EQ(bytes_written_, 0u); 218 DCHECK_EQ(bytes_written_, 0u);
218 219
219 mojom::DecoderBufferPtr mojo_buffer = 220 mojom::DecoderBufferPtr mojo_buffer =
220 mojom::DecoderBuffer::From(media_buffer); 221 mojom::DecoderBuffer::From(media_buffer);
221 222
222 if (media_buffer->end_of_stream()) 223 // A non-EOS buffer can have zero size. See http://crbug.com/663438
224 if (media_buffer->end_of_stream() || media_buffer->data_size() == 0)
223 return mojo_buffer; 225 return mojo_buffer;
224 226
225 // Serialize the data section of the DecoderBuffer into our pipe. 227 // Serialize the data section of the DecoderBuffer into our pipe.
226 media_buffer_ = media_buffer; 228 media_buffer_ = media_buffer;
227 MojoResult result = WriteDecoderBufferData(); 229 MojoResult result = WriteDecoderBufferData();
228 return IsPipeReadWriteError(result) ? nullptr : std::move(mojo_buffer); 230 return IsPipeReadWriteError(result) ? nullptr : std::move(mojo_buffer);
229 } 231 }
230 232
231 void MojoDecoderBufferWriter::OnPipeError(MojoResult result) { 233 void MojoDecoderBufferWriter::OnPipeError(MojoResult result) {
232 DVLOG(1) << __FUNCTION__ << "(" << result << ")"; 234 DVLOG(1) << __FUNCTION__ << "(" << result << ")";
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 if (bytes_written_ == buffer_size) { 277 if (bytes_written_ == buffer_size) {
276 media_buffer_ = nullptr; 278 media_buffer_ = nullptr;
277 bytes_written_ = 0; 279 bytes_written_ = 0;
278 } 280 }
279 } 281 }
280 282
281 return result; 283 return result;
282 } 284 }
283 285
284 } // namespace media 286 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698