1 /*
2 * Copyright (C) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "avcodec_errors.h"
17 #include "avcodec_log.h"
18 #include "codec_drm_decrypt.h"
19 #ifdef SUPPORT_DRM
20 #include "imedia_key_session_service.h"
21 #endif
22
23 namespace {
24 constexpr OHOS::HiviewDFX::HiLogLabel LABEL = {LOG_CORE, LOG_DOMAIN_TEST, "CodecServer"};
25 } // namespace
26
27 namespace OHOS {
28 namespace MediaAVCodec {
DrmGetSkipClearBytes(uint32_t & skipBytes) const29 void CodecDrmDecrypt::DrmGetSkipClearBytes(uint32_t &skipBytes) const
30 {
31 (void)skipBytes;
32 }
33
DrmGetNalTypeAndIndex(const uint8_t * data,uint32_t dataSize,uint8_t & nalType,uint32_t & posIndex) const34 int32_t CodecDrmDecrypt::DrmGetNalTypeAndIndex(const uint8_t *data, uint32_t dataSize, uint8_t &nalType,
35 uint32_t &posIndex) const
36 {
37 (void)data;
38 (void)dataSize;
39 (void)nalType;
40 (void)posIndex;
41 return AVCS_ERR_OK;
42 }
43
DrmGetSyncHeaderIndex(const uint8_t * data,uint32_t dataSize,uint32_t & posIndex)44 void CodecDrmDecrypt::DrmGetSyncHeaderIndex(const uint8_t *data, uint32_t dataSize, uint32_t &posIndex)
45 {
46 (void)data;
47 (void)dataSize;
48 (void)posIndex;
49 }
50
DrmGetFinalNalTypeAndIndex(const uint8_t * data,uint32_t dataSize,uint32_t & posStartIndex,uint32_t & posEndIndex) const51 uint8_t CodecDrmDecrypt::DrmGetFinalNalTypeAndIndex(const uint8_t *data, uint32_t dataSize, uint32_t &posStartIndex,
52 uint32_t &posEndIndex) const
53 {
54 (void)data;
55 (void)dataSize;
56 (void)posStartIndex;
57 (void)posEndIndex;
58 return 0;
59 }
60
DrmRemoveAmbiguityBytes(uint8_t * data,uint32_t & posEndIndex,uint32_t offset,uint32_t & dataSize)61 void CodecDrmDecrypt::DrmRemoveAmbiguityBytes(uint8_t *data, uint32_t &posEndIndex, uint32_t offset, uint32_t &dataSize)
62 {
63 (void)data;
64 (void)posEndIndex;
65 (void)offset;
66 (void)dataSize;
67 }
68
DrmModifyCencInfo(std::shared_ptr<AVBuffer> inBuf,uint32_t & dataSize,uint8_t isAmbiguity,MetaDrmCencInfo * cencInfo) const69 void CodecDrmDecrypt::DrmModifyCencInfo(std::shared_ptr<AVBuffer> inBuf, uint32_t &dataSize, uint8_t isAmbiguity,
70 MetaDrmCencInfo *cencInfo) const
71 {
72 (void)inBuf;
73 (void)dataSize;
74 (void)isAmbiguity;
75 (void)cencInfo;
76 }
77
SetDrmAlgoAndBlocks(uint8_t algo,MetaDrmCencInfo * cencInfo)78 void CodecDrmDecrypt::SetDrmAlgoAndBlocks(uint8_t algo, MetaDrmCencInfo *cencInfo)
79 {
80 (void)algo;
81 (void)cencInfo;
82 }
83
DrmFindAvsCeiNalUnit(const uint8_t * data,uint32_t dataSize,uint32_t & ceiStartPos,uint32_t index)84 int CodecDrmDecrypt::DrmFindAvsCeiNalUnit(const uint8_t *data, uint32_t dataSize, uint32_t &ceiStartPos,
85 uint32_t index)
86 {
87 (void)data;
88 (void)dataSize;
89 (void)ceiStartPos;
90 (void)index;
91 return AVCS_ERR_OK;
92 }
93
DrmFindHevcCeiNalUnit(const uint8_t * data,uint32_t dataSize,uint32_t & ceiStartPos,uint32_t index)94 int CodecDrmDecrypt::DrmFindHevcCeiNalUnit(const uint8_t *data, uint32_t dataSize, uint32_t &ceiStartPos,
95 uint32_t index)
96 {
97 (void)data;
98 (void)dataSize;
99 (void)ceiStartPos;
100 (void)index;
101 return AVCS_ERR_OK;
102 }
103
DrmFindH264CeiNalUnit(const uint8_t * data,uint32_t dataSize,uint32_t & ceiStartPos,uint32_t index)104 int CodecDrmDecrypt::DrmFindH264CeiNalUnit(const uint8_t *data, uint32_t dataSize, uint32_t &ceiStartPos,
105 uint32_t index)
106 {
107 (void)data;
108 (void)dataSize;
109 (void)ceiStartPos;
110 (void)index;
111 return AVCS_ERR_OK;
112 }
113
DrmFindCeiNalUnit(const uint8_t * data,uint32_t dataSize,uint32_t & ceiStartPos,uint32_t index) const114 int CodecDrmDecrypt::DrmFindCeiNalUnit(const uint8_t *data, uint32_t dataSize, uint32_t &ceiStartPos,
115 uint32_t index) const
116 {
117 (void)data;
118 (void)dataSize;
119 (void)ceiStartPos;
120 (void)index;
121 return AVCS_ERR_OK;
122 }
123
DrmFindCeiPos(const uint8_t * data,uint32_t dataSize,uint32_t & ceiStartPos,uint32_t & ceiEndPos) const124 int CodecDrmDecrypt::DrmFindCeiPos(const uint8_t *data, uint32_t dataSize, uint32_t &ceiStartPos,
125 uint32_t &ceiEndPos) const
126 {
127 (void)data;
128 (void)dataSize;
129 (void)ceiStartPos;
130 (void)ceiEndPos;
131 return AVCS_ERR_OK;
132 }
133
DrmFindEncryptionFlagPos(const uint8_t * data,uint32_t dataSize,uint32_t & pos)134 void CodecDrmDecrypt::DrmFindEncryptionFlagPos(const uint8_t *data, uint32_t dataSize, uint32_t &pos)
135 {
136 (void)data;
137 (void)dataSize;
138 (void)pos;
139 }
140
DrmGetKeyId(uint8_t * data,uint32_t & dataSize,uint32_t & pos,MetaDrmCencInfo * cencInfo)141 int CodecDrmDecrypt::DrmGetKeyId(uint8_t *data, uint32_t &dataSize, uint32_t &pos, MetaDrmCencInfo *cencInfo)
142 {
143 (void)data;
144 (void)dataSize;
145 (void)pos;
146 (void)cencInfo;
147 return AVCS_ERR_OK;
148 }
149
DrmGetKeyIv(const uint8_t * data,uint32_t dataSize,uint32_t & pos,MetaDrmCencInfo * cencInfo)150 int CodecDrmDecrypt::DrmGetKeyIv(const uint8_t *data, uint32_t dataSize, uint32_t &pos, MetaDrmCencInfo *cencInfo)
151 {
152 (void)data;
153 (void)dataSize;
154 (void)pos;
155 (void)cencInfo;
156 return AVCS_ERR_OK;
157 }
158
DrmParseDrmDescriptor(const uint8_t * data,uint32_t dataSize,uint32_t & pos,uint8_t drmDescriptorFlag,MetaDrmCencInfo * cencInfo)159 int CodecDrmDecrypt::DrmParseDrmDescriptor(const uint8_t *data, uint32_t dataSize, uint32_t &pos,
160 uint8_t drmDescriptorFlag, MetaDrmCencInfo *cencInfo)
161 {
162 (void)data;
163 (void)dataSize;
164 (void)pos;
165 (void)drmDescriptorFlag;
166 (void)cencInfo;
167 return AVCS_ERR_OK;
168 }
169
DrmSetKeyInfo(const uint8_t * data,uint32_t dataSize,uint32_t ceiStartPos,uint8_t & isAmbiguity,MetaDrmCencInfo * cencInfo)170 void CodecDrmDecrypt::DrmSetKeyInfo(const uint8_t *data, uint32_t dataSize, uint32_t ceiStartPos,
171 uint8_t &isAmbiguity, MetaDrmCencInfo *cencInfo)
172 {
173 (void)data;
174 (void)dataSize;
175 (void)ceiStartPos;
176 (void)isAmbiguity;
177 (void)cencInfo;
178 }
179
DrmGetCencInfo(std::shared_ptr<AVBuffer> inBuf,uint32_t dataSize,uint8_t & isAmbiguity,MetaDrmCencInfo * cencInfo) const180 void CodecDrmDecrypt::DrmGetCencInfo(std::shared_ptr<AVBuffer> inBuf, uint32_t dataSize, uint8_t &isAmbiguity,
181 MetaDrmCencInfo *cencInfo) const
182 {
183 (void)inBuf;
184 (void)dataSize;
185 (void)isAmbiguity;
186 (void)cencInfo;
187 }
188
DrmVideoCencDecrypt(std::shared_ptr<AVBuffer> & inBuf,std::shared_ptr<AVBuffer> & outBuf,uint32_t & dataSize)189 int32_t CodecDrmDecrypt::DrmVideoCencDecrypt(std::shared_ptr<AVBuffer> &inBuf, std::shared_ptr<AVBuffer> &outBuf,
190 uint32_t &dataSize)
191 {
192 (void)inBuf;
193 (void)outBuf;
194 (void)dataSize;
195 return 0;
196 }
197
DrmAudioCencDecrypt(std::shared_ptr<AVBuffer> & inBuf,std::shared_ptr<AVBuffer> & outBuf,uint32_t & dataSize)198 int32_t CodecDrmDecrypt::DrmAudioCencDecrypt(std::shared_ptr<AVBuffer> &inBuf, std::shared_ptr<AVBuffer> &outBuf,
199 uint32_t &dataSize)
200 {
201 (void)inBuf;
202 (void)outBuf;
203 (void)dataSize;
204 return 0;
205 }
206
SetCodecName(const std::string & codecName)207 void CodecDrmDecrypt::SetCodecName(const std::string &codecName)
208 {
209 (void)codecName;
210 }
211
GetCodingType()212 void CodecDrmDecrypt::GetCodingType()
213 {
214 }
215
SetDecryptionConfig(const sptr<DrmStandard::IMediaKeySessionService> & keySession,const bool svpFlag)216 void CodecDrmDecrypt::SetDecryptionConfig(const sptr<DrmStandard::IMediaKeySessionService> &keySession,
217 const bool svpFlag)
218 {
219 (void)keySession;
220 (void)svpFlag;
221 }
222
223 #ifdef SUPPORT_DRM
SetDrmBuffer(const MetaDrmCencInfo * const cencInfo,const std::shared_ptr<AVBuffer> & inBuf,const std::shared_ptr<AVBuffer> & outBuf) const224 int32_t CodecDrmDecrypt::SetDrmBuffer(const MetaDrmCencInfo *const cencInfo, const std::shared_ptr<AVBuffer> &inBuf,
225 const std::shared_ptr<AVBuffer> &outBuf) const
226 {
227 AVCODEC_LOGD("CodecDrmDecrypt SetDrmBuffer");
228 (void)cencInfo;
229 (void)inBuf;
230 (void)outBuf;
231 return AVCS_ERR_OK;
232 }
233 #endif
234
DecryptMediaData(const MetaDrmCencInfo * const cencInfo,std::shared_ptr<AVBuffer> & inBuf,std::shared_ptr<AVBuffer> & outBuf)235 int32_t CodecDrmDecrypt::DecryptMediaData(const MetaDrmCencInfo *const cencInfo, std::shared_ptr<AVBuffer> &inBuf,
236 std::shared_ptr<AVBuffer> &outBuf)
237 {
238 AVCODEC_LOGI("CodecDrmDecrypt DecryptMediaData");
239 (void)cencInfo;
240 (void)inBuf;
241 (void)outBuf;
242 return AVCS_ERR_OK;
243 }
244
245 } // namespace MediaAVCodec
246 } // namespace OHOS
247