• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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