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

Side by Side Diff: media/mp4/avc.cc

Issue 10651006: Add Common Encryption support to BMFF, including subsample decryption. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Add wrong subsample size test Created 8 years, 5 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/mp4/avc.h" 5 #include "media/mp4/avc.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "media/mp4/box_definitions.h" 10 #include "media/mp4/box_definitions.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 buffer->insert(buffer->end(), kAnnexBStartCode, 52 buffer->insert(buffer->end(), kAnnexBStartCode,
53 kAnnexBStartCode + kAnnexBStartCodeSize); 53 kAnnexBStartCode + kAnnexBStartCodeSize);
54 buffer->insert(buffer->end(), temp.begin() + pos, 54 buffer->insert(buffer->end(), temp.begin() + pos,
55 temp.begin() + pos + nal_size); 55 temp.begin() + pos + nal_size);
56 pos += nal_size; 56 pos += nal_size;
57 } 57 }
58 return pos == temp.size(); 58 return pos == temp.size();
59 } 59 }
60 60
61 // static 61 // static
62 bool AVC::InsertParameterSets(const AVCDecoderConfigurationRecord& avc_config, 62 bool AVC::ConvertParameterSets(const AVCDecoderConfigurationRecord& avc_config,
63 std::vector<uint8>* buffer) { 63 std::vector<uint8>* buffer) {
64 DCHECK(buffer->empty());
65 buffer->clear();
64 int total_size = 0; 66 int total_size = 0;
65 for (size_t i = 0; i < avc_config.sps_list.size(); i++) 67 for (size_t i = 0; i < avc_config.sps_list.size(); i++)
66 total_size += avc_config.sps_list[i].size() + kAnnexBStartCodeSize; 68 total_size += avc_config.sps_list[i].size() + kAnnexBStartCodeSize;
67 for (size_t i = 0; i < avc_config.pps_list.size(); i++) 69 for (size_t i = 0; i < avc_config.pps_list.size(); i++)
68 total_size += avc_config.pps_list[i].size() + kAnnexBStartCodeSize; 70 total_size += avc_config.pps_list[i].size() + kAnnexBStartCodeSize;
69 71 buffer->reserve(total_size);
70 std::vector<uint8> temp;
71 temp.reserve(total_size);
72 72
73 for (size_t i = 0; i < avc_config.sps_list.size(); i++) { 73 for (size_t i = 0; i < avc_config.sps_list.size(); i++) {
74 temp.insert(temp.end(), kAnnexBStartCode, 74 buffer->insert(buffer->end(), kAnnexBStartCode,
75 kAnnexBStartCode + kAnnexBStartCodeSize); 75 kAnnexBStartCode + kAnnexBStartCodeSize);
76 temp.insert(temp.end(), avc_config.sps_list[i].begin(), 76 buffer->insert(buffer->end(), avc_config.sps_list[i].begin(),
77 avc_config.sps_list[i].end()); 77 avc_config.sps_list[i].end());
78 } 78 }
79 79
80 for (size_t i = 0; i < avc_config.pps_list.size(); i++) { 80 for (size_t i = 0; i < avc_config.pps_list.size(); i++) {
81 temp.insert(temp.end(), kAnnexBStartCode, 81 buffer->insert(buffer->end(), kAnnexBStartCode,
82 kAnnexBStartCode + kAnnexBStartCodeSize); 82 kAnnexBStartCode + kAnnexBStartCodeSize);
83 temp.insert(temp.end(), avc_config.pps_list[i].begin(), 83 buffer->insert(buffer->end(), avc_config.pps_list[i].begin(),
84 avc_config.pps_list[i].end()); 84 avc_config.pps_list[i].end());
85 } 85 }
86
87 buffer->insert(buffer->begin(), temp.begin(), temp.end());
88 return true; 86 return true;
89 } 87 }
90 88
91 } // namespace mp4 89 } // namespace mp4
92 } // namespace media 90 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698