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

Side by Side Diff: services/media/framework/packet.cc

Issue 1814553002: Motown: Improvements to packet definition (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 9 months 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 "base/logging.h" 5 #include "base/logging.h"
6 #include "services/media/framework/packet.h" 6 #include "services/media/framework/packet.h"
7 #include "services/media/framework/payload_allocator.h" 7 #include "services/media/framework/payload_allocator.h"
8 8
9 namespace mojo { 9 namespace mojo {
10 namespace media { 10 namespace media {
11 11
12 Packet::Packet(
13 int64_t pts,
14 bool end_of_stream,
15 size_t size,
16 void* payload) :
17 pts_(pts),
18 end_of_stream_(end_of_stream),
19 size_(size),
20 payload_(payload) {
21 DCHECK((size == 0) == (payload == nullptr));
22 }
23
12 class PacketImpl : public Packet { 24 class PacketImpl : public Packet {
13 public: 25 public:
14 PacketImpl( 26 PacketImpl(
15 int64_t presentation_time, 27 int64_t pts,
16 uint64_t duration,
17 bool end_of_stream, 28 bool end_of_stream,
18 size_t size, 29 size_t size,
19 void* payload, 30 void* payload,
20 PayloadAllocator* allocator) : 31 PayloadAllocator* allocator) :
21 presentation_time_(presentation_time), 32 Packet(pts, end_of_stream, size, payload),
22 duration_(duration), 33 allocator_(allocator) {}
23 end_of_stream_(end_of_stream),
24 size_(size),
25 payload_(payload),
26 allocator_(allocator) {
27 DCHECK((size == 0) == (payload == nullptr));
28 }
29 34
35 protected:
30 ~PacketImpl() override {}; 36 ~PacketImpl() override {};
31 37
32 int64_t presentation_time() const override { return presentation_time_; }
33
34 uint64_t duration() const override { return duration_; }
35
36 bool end_of_stream() const override { return end_of_stream_; }
37
38 size_t size() const override { return size_; }
39
40 void* payload() const override { return payload_; }
41
42 protected:
43 void Release() override { 38 void Release() override {
44 if (payload_ != nullptr && allocator_ != nullptr) { 39 if (payload() != nullptr && allocator_ != nullptr) {
johngro 2016/03/21 19:47:56 we lost the DCHECK(allocator_) here.
dalesat 2016/03/21 22:30:58 It seemed unnecessary - the previous line checks t
johngro 2016/03/21 22:56:05 fair enough. What is the intended behavior if pay
dalesat 2016/03/22 00:06:56 The code is correct but unclear. Added a comment t
45 DCHECK(allocator_); 40 allocator_->ReleasePayloadBuffer(size(), payload());
46 allocator_->ReleasePayloadBuffer(size_, payload_);
47 } 41 }
48 delete this; 42 delete this;
49 } 43 }
50 44
51 private: 45 private:
52 int64_t presentation_time_;
53 uint64_t duration_;
54 bool end_of_stream_;
55 size_t size_;
56 void* payload_;
57 PayloadAllocator* allocator_; 46 PayloadAllocator* allocator_;
58 }; 47 };
59 48
60 // static 49 // static
61 PacketPtr Packet::Create( 50 PacketPtr Packet::Create(
62 int64_t presentation_time, 51 int64_t pts,
63 uint64_t duration,
64 bool end_of_stream, 52 bool end_of_stream,
65 size_t size, 53 size_t size,
66 void* payload, 54 void* payload,
67 PayloadAllocator* allocator) { 55 PayloadAllocator* allocator) {
68 DCHECK(payload == nullptr || allocator != nullptr); 56 DCHECK(payload == nullptr || allocator != nullptr);
69 return PacketPtr(new PacketImpl( 57 return PacketPtr(new PacketImpl(
70 presentation_time, 58 pts,
71 duration,
72 end_of_stream, 59 end_of_stream,
73 size, 60 size,
74 payload, 61 payload,
75 allocator)); 62 allocator));
76 } 63 }
77 64
78 // static 65 // static
79 PacketPtr Packet::CreateNoAllocator( 66 PacketPtr Packet::CreateNoAllocator(
80 int64_t presentation_time, 67 int64_t pts,
81 uint64_t duration,
82 bool end_of_stream, 68 bool end_of_stream,
83 size_t size, 69 size_t size,
84 void* payload) { 70 void* payload) {
85 return PacketPtr(new PacketImpl( 71 return PacketPtr(new PacketImpl(
86 presentation_time, 72 pts,
87 duration,
88 end_of_stream, 73 end_of_stream,
89 size, 74 size,
90 payload, 75 payload,
91 nullptr)); 76 nullptr));
92 } 77 }
93 78
94 // static 79 // static
95 PacketPtr Packet::CreateEndOfStream(int64_t presentation_time) { 80 PacketPtr Packet::CreateEndOfStream(int64_t pts) {
96 return PacketPtr(new PacketImpl( 81 return PacketPtr(new PacketImpl(
97 presentation_time, 82 pts,
98 0, // duration
99 true, // end_of_stream 83 true, // end_of_stream
100 0, // size 84 0, // size
101 nullptr, // payload 85 nullptr, // payload
102 nullptr)); // allocator 86 nullptr)); // allocator
103 } 87 }
104 88
105 } // namespace media 89 } // namespace media
106 } // namespace mojo 90 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698