OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/base/video_frame_metadata.h" | 5 #include "media/base/video_frame_metadata.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 DCHECK_EQ(ROTATION, key); | 46 DCHECK_EQ(ROTATION, key); |
47 dictionary_.SetIntegerWithoutPathExpansion(ToInternalKey(key), value); | 47 dictionary_.SetIntegerWithoutPathExpansion(ToInternalKey(key), value); |
48 } | 48 } |
49 | 49 |
50 void VideoFrameMetadata::SetString(Key key, const std::string& value) { | 50 void VideoFrameMetadata::SetString(Key key, const std::string& value) { |
51 dictionary_.SetWithoutPathExpansion( | 51 dictionary_.SetWithoutPathExpansion( |
52 ToInternalKey(key), | 52 ToInternalKey(key), |
53 // Using BinaryValue since we don't want the |value| interpreted as having | 53 // Using BinaryValue since we don't want the |value| interpreted as having |
54 // any particular character encoding (e.g., UTF-8) by | 54 // any particular character encoding (e.g., UTF-8) by |
55 // base::DictionaryValue. | 55 // base::DictionaryValue. |
56 base::BinaryValue::CreateWithCopiedBuffer(value.data(), value.size())); | 56 base::Value::CreateWithCopiedBuffer(value.data(), value.size())); |
57 } | 57 } |
58 | 58 |
59 namespace { | 59 namespace { |
60 template<class TimeType> | 60 template<class TimeType> |
61 void SetTimeValue(VideoFrameMetadata::Key key, | 61 void SetTimeValue(VideoFrameMetadata::Key key, |
62 const TimeType& value, | 62 const TimeType& value, |
63 base::DictionaryValue* dictionary) { | 63 base::DictionaryValue* dictionary) { |
64 const int64_t internal_value = value.ToInternalValue(); | 64 const int64_t internal_value = value.ToInternalValue(); |
65 dictionary->SetWithoutPathExpansion( | 65 dictionary->SetWithoutPathExpansion( |
66 ToInternalKey(key), | 66 ToInternalKey(key), base::Value::CreateWithCopiedBuffer( |
67 base::BinaryValue::CreateWithCopiedBuffer( | 67 reinterpret_cast<const char*>(&internal_value), |
68 reinterpret_cast<const char*>(&internal_value), | 68 sizeof(internal_value))); |
69 sizeof(internal_value))); | |
70 } | 69 } |
71 } // namespace | 70 } // namespace |
72 | 71 |
73 void VideoFrameMetadata::SetTimeDelta(Key key, const base::TimeDelta& value) { | 72 void VideoFrameMetadata::SetTimeDelta(Key key, const base::TimeDelta& value) { |
74 SetTimeValue(key, value, &dictionary_); | 73 SetTimeValue(key, value, &dictionary_); |
75 } | 74 } |
76 | 75 |
77 void VideoFrameMetadata::SetTimeTicks(Key key, const base::TimeTicks& value) { | 76 void VideoFrameMetadata::SetTimeTicks(Key key, const base::TimeTicks& value) { |
78 SetTimeValue(key, value, &dictionary_); | 77 SetTimeValue(key, value, &dictionary_); |
79 } | 78 } |
(...skipping 23 matching lines...) Expand all Loading... |
103 int int_value; | 102 int int_value; |
104 const bool rv = dictionary_.GetIntegerWithoutPathExpansion(ToInternalKey(key), | 103 const bool rv = dictionary_.GetIntegerWithoutPathExpansion(ToInternalKey(key), |
105 &int_value); | 104 &int_value); |
106 if (rv) | 105 if (rv) |
107 *value = static_cast<VideoRotation>(int_value); | 106 *value = static_cast<VideoRotation>(int_value); |
108 return rv; | 107 return rv; |
109 } | 108 } |
110 | 109 |
111 bool VideoFrameMetadata::GetString(Key key, std::string* value) const { | 110 bool VideoFrameMetadata::GetString(Key key, std::string* value) const { |
112 DCHECK(value); | 111 DCHECK(value); |
113 const base::BinaryValue* const binary_value = GetBinaryValue(key); | 112 const base::Value* const binary_value = GetBinaryValue(key); |
114 if (binary_value) | 113 if (binary_value) |
115 value->assign(binary_value->GetBuffer(), binary_value->GetSize()); | 114 value->assign(binary_value->GetBuffer(), binary_value->GetSize()); |
116 return !!binary_value; | 115 return !!binary_value; |
117 } | 116 } |
118 | 117 |
119 namespace { | 118 namespace { |
120 template<class TimeType> | 119 template <class TimeType> |
121 bool ToTimeValue(const base::BinaryValue& binary_value, TimeType* value) { | 120 bool ToTimeValue(const base::Value& binary_value, TimeType* value) { |
122 DCHECK(value); | 121 DCHECK(value); |
123 int64_t internal_value; | 122 int64_t internal_value; |
124 if (binary_value.GetSize() != sizeof(internal_value)) | 123 if (binary_value.GetSize() != sizeof(internal_value)) |
125 return false; | 124 return false; |
126 memcpy(&internal_value, binary_value.GetBuffer(), sizeof(internal_value)); | 125 memcpy(&internal_value, binary_value.GetBuffer(), sizeof(internal_value)); |
127 *value = TimeType::FromInternalValue(internal_value); | 126 *value = TimeType::FromInternalValue(internal_value); |
128 return true; | 127 return true; |
129 } | 128 } |
130 } // namespace | 129 } // namespace |
131 | 130 |
132 bool VideoFrameMetadata::GetTimeDelta(Key key, base::TimeDelta* value) const { | 131 bool VideoFrameMetadata::GetTimeDelta(Key key, base::TimeDelta* value) const { |
133 const base::BinaryValue* const binary_value = GetBinaryValue(key); | 132 const base::Value* const binary_value = GetBinaryValue(key); |
134 return binary_value && ToTimeValue(*binary_value, value); | 133 return binary_value && ToTimeValue(*binary_value, value); |
135 } | 134 } |
136 | 135 |
137 bool VideoFrameMetadata::GetTimeTicks(Key key, base::TimeTicks* value) const { | 136 bool VideoFrameMetadata::GetTimeTicks(Key key, base::TimeTicks* value) const { |
138 const base::BinaryValue* const binary_value = GetBinaryValue(key); | 137 const base::Value* const binary_value = GetBinaryValue(key); |
139 return binary_value && ToTimeValue(*binary_value, value); | 138 return binary_value && ToTimeValue(*binary_value, value); |
140 } | 139 } |
141 | 140 |
142 const base::Value* VideoFrameMetadata::GetValue(Key key) const { | 141 const base::Value* VideoFrameMetadata::GetValue(Key key) const { |
143 const base::Value* result = nullptr; | 142 const base::Value* result = nullptr; |
144 if (!dictionary_.GetWithoutPathExpansion(ToInternalKey(key), &result)) | 143 if (!dictionary_.GetWithoutPathExpansion(ToInternalKey(key), &result)) |
145 return nullptr; | 144 return nullptr; |
146 return result; | 145 return result; |
147 } | 146 } |
148 | 147 |
(...skipping 10 matching lines...) Expand all Loading... |
159 void VideoFrameMetadata::MergeInternalValuesFrom( | 158 void VideoFrameMetadata::MergeInternalValuesFrom( |
160 const base::DictionaryValue& in) { | 159 const base::DictionaryValue& in) { |
161 dictionary_.MergeDictionary(&in); | 160 dictionary_.MergeDictionary(&in); |
162 } | 161 } |
163 | 162 |
164 void VideoFrameMetadata::MergeMetadataFrom( | 163 void VideoFrameMetadata::MergeMetadataFrom( |
165 const VideoFrameMetadata* metadata_source) { | 164 const VideoFrameMetadata* metadata_source) { |
166 dictionary_.MergeDictionary(&metadata_source->dictionary_); | 165 dictionary_.MergeDictionary(&metadata_source->dictionary_); |
167 } | 166 } |
168 | 167 |
169 const base::BinaryValue* VideoFrameMetadata::GetBinaryValue(Key key) const { | 168 const base::Value* VideoFrameMetadata::GetBinaryValue(Key key) const { |
170 const base::Value* internal_value = nullptr; | 169 const base::Value* internal_value = nullptr; |
171 if (dictionary_.GetWithoutPathExpansion(ToInternalKey(key), | 170 if (dictionary_.GetWithoutPathExpansion(ToInternalKey(key), |
172 &internal_value) && | 171 &internal_value) && |
173 internal_value->GetType() == base::Value::Type::BINARY) { | 172 internal_value->GetType() == base::Value::Type::BINARY) { |
174 return internal_value; | 173 return internal_value; |
175 } | 174 } |
176 return nullptr; | 175 return nullptr; |
177 } | 176 } |
178 | 177 |
179 } // namespace media | 178 } // namespace media |
OLD | NEW |