未验证 提交 33f3104e 编写于 作者: O openharmony_ci 提交者: Gitee

!20953 修改资料中音频编解码的回调函数名

Merge pull request !20953 from peng/master
...@@ -71,30 +71,30 @@ ...@@ -71,30 +71,30 @@
2. 调用OH_AudioDecoder_SetCallback()设置回调函数。 2. 调用OH_AudioDecoder_SetCallback()设置回调函数。
注册回调函数指针集合OH_AVCodecAsyncCallback,包括: 注册回调函数指针集合OH_AVCodecAsyncCallback,包括:
- 解码器运行错误 - OH_AVCodecOnError:解码器运行错误。
- 码流信息变化,如声道变化等。 - OH_AVCodecOnStreamChanged:码流信息变化,如声道变化等。
- 运行过程中需要新的输入数据,即解码器已准备好,可以输入数据。 - OH_AVCodecOnNeedInputData:运行过程中需要新的输入数据,即解码器已准备好,可以输入数据。
- 运行过程中产生了新的输出数据,即解码完成。 - OH_AVCodecOnNewOutputData:运行过程中产生了新的输出数据,即解码完成。
开发者可以通过处理该回调报告的信息,确保解码器正常运转。 开发者可以通过处理该回调报告的信息,确保解码器正常运转。
```cpp ```cpp
// 设置 OnError 回调函数 // OH_AVCodecOnError回调函数的实现
static void OnError(OH_AVCodec *codec, int32_t errorCode, void *userData) static void OnError(OH_AVCodec *codec, int32_t errorCode, void *userData)
{ {
(void)codec; (void)codec;
(void)errorCode; (void)errorCode;
(void)userData; (void)userData;
} }
// 设置 FormatChange 回调函数 // OH_AVCodecOnStreamChanged回调函数的实现
static void OnOutputFormatChanged(OH_AVCodec *codec, OH_AVFormat *format, void*userData) static void OnStreamChanged(OH_AVCodec *codec, OH_AVFormat *format, void*userData)
{ {
(void)codec; (void)codec;
(void)format; (void)format;
(void)userData; (void)userData;
} }
// 解码输入码流送入InputBuffer 队列 // OH_AVCodecOnNeedInputData回调函数的实现
static void OnInputBufferAvailable(OH_AVCodec *codec, uint32_t index, OH_AVMemory*data, void *userData) static void onNeedInputData(OH_AVCodec *codec, uint32_t index, OH_AVMemory*data, void *userData)
{ {
(void)codec; (void)codec;
ADecSignal *signal = static_cast<ADecSignal *>(userData); ADecSignal *signal = static_cast<ADecSignal *>(userData);
...@@ -102,10 +102,10 @@ ...@@ -102,10 +102,10 @@
signal->inQueue_.push(index); signal->inQueue_.push(index);
signal->inBufferQueue_.push(data); signal->inBufferQueue_.push(data);
signal->inCond_.notify_all(); signal->inCond_.notify_all();
// 解码输入码流送入InputBuffer 队列 // 解码输入码流送入InputBuffer队列
} }
// 解码完成的PCM送入OutputBuffer队列 // OH_AVCodecOnNewOutputData回调函数的实现
static void OnOutputBufferAvailable(OH_AVCodec *codec, uint32_t index, OH_AVMemory*data, OH_AVCodecBufferAttr *attr, static void onNeedOutputData(OH_AVCodec *codec, uint32_t index, OH_AVMemory*data, OH_AVCodecBufferAttr *attr,
void *userData) void *userData)
{ {
(void)codec; (void)codec;
...@@ -121,7 +121,7 @@ ...@@ -121,7 +121,7 @@
// 将对应解码完成的数据data送入outBuffer队列 // 将对应解码完成的数据data送入outBuffer队列
} }
signal_ = new ADecSignal(); signal_ = new ADecSignal();
OH_AVCodecAsyncCallback cb = {&OnError, &OnOutputFormatChanged, OnInputBufferAvailable, &OnOutputBufferAvailable}; OH_AVCodecAsyncCallback cb = {&OnError, &OnStreamChanged, &onNeedInputData, &onNeedOutputData};
// 配置异步回调 // 配置异步回调
int32_t ret = OH_AudioDecoder_SetCallback(audioDec, cb, signal_); int32_t ret = OH_AudioDecoder_SetCallback(audioDec, cb, signal_);
if (ret != AV_ERR_OK) { if (ret != AV_ERR_OK) {
......
...@@ -74,46 +74,45 @@ ...@@ -74,46 +74,45 @@
注册回调函数指针集合OH_AVCodecAsyncCallback,包括: 注册回调函数指针集合OH_AVCodecAsyncCallback,包括:
- 编码器运行错误 - OH_AVCodecOnError:编码器运行错误。
- 码流信息变化,如声道变化等。 - OH_AVCodecOnStreamChanged:码流信息变化,如声道变化等。
- 运行过程中需要新的输入数据,即编码器已准备好,可以输入PCM数据。 - OH_AVCodecOnNeedInputData:运行过程中需要新的输入数据,即编码器已准备好,可以输入PCM数据。
- 运行过程中产生了新的输出数据,即编码完成。 - OH_AVCodecOnNewOutputData:运行过程中产生了新的输出数据,即编码完成。
开发者可以通过处理该回调报告的信息,确保编码器正常运转。 开发者可以通过处理该回调报告的信息,确保编码器正常运转。
```cpp ```cpp
// 设置 OnError 回调函数 // OH_AVCodecOnError回调函数的实现
static void OnError(OH_AVCodec *codec, int32_t errorCode, void *userData) static void OnError(OH_AVCodec *codec, int32_t errorCode, void *userData)
{ {
(void)codec; (void)codec;
(void)errorCode; (void)errorCode;
(void)userData; (void)userData;
} }
// 设置 FormatChange 回调函数 // OH_AVCodecOnStreamChanged回调函数的实现
static void OnOutputFormatChanged(OH_AVCodec *codec, OH_AVFormat *format, void *userData) static void OnStreamChanged(OH_AVCodec *codec, OH_AVFormat *format, void *userData)
{ {
(void)codec; (void)codec;
(void)format; (void)format;
(void)userData; (void)userData;
} }
// 编码输入PCM送入InputBuffer 队列 // OH_AVCodecOnNeedInputData回调函数的实现
static void OnInputBufferAvailable(OH_AVCodec *codec, uint32_t index, OH_AVMemory *data, void *userData) static void OnNeedInputData(OH_AVCodec *codec, uint32_t index, OH_AVMemory *data, void *userData)
{ {
(void)codec; (void)codec;
// 编码输入码流送入InputBuffer 队列 // 编码输入码流送入InputBuffer队列
AEncSignal *signal = static_cast<AEncSignal *>(userData); AEncSignal *signal = static_cast<AEncSignal *>(userData);
cout << "OnInputBufferAvailable received, index:" << index << endl;
unique_lock<mutex> lock(signal->inMutex_); unique_lock<mutex> lock(signal->inMutex_);
signal->inQueue_.push(index); signal->inQueue_.push(index);
signal->inBufferQueue_.push(data); signal->inBufferQueue_.push(data);
signal->inCond_.notify_all(); signal->inCond_.notify_all();
} }
// 编码完成的码流送入OutputBuffer队列 // OH_AVCodecOnNewOutputData回调函数的实现
static void OnOutputBufferAvailable(OH_AVCodec *codec, uint32_t index, OH_AVMemory *data, OH_AVCodecBufferAttr *attr, static void OnNeedOutputData(OH_AVCodec *codec, uint32_t index, OH_AVMemory *data, OH_AVCodecBufferAttr *attr,
void *userData) void *userData)
{ {
(void)codec; (void)codec;
// 将对应输出buffer的 index 送入OutputQueue_队列 // 将对应输出buffer的index送入OutputQueue_队列
// 将对应编码完成的数据data送入outBuffer队列 // 将对应编码完成的数据data送入outBuffer队列
AEncSignal *signal = static_cast<AEncSignal *>(userData); AEncSignal *signal = static_cast<AEncSignal *>(userData);
unique_lock<mutex> lock(signal->outMutex_); unique_lock<mutex> lock(signal->outMutex_);
...@@ -123,7 +122,7 @@ ...@@ -123,7 +122,7 @@
signal->attrQueue_.push(*attr); signal->attrQueue_.push(*attr);
} }
} }
OH_AVCodecAsyncCallback cb = {&OnError, &OnOutputFormatChanged, &OnInputBufferAvailable, &OnOutputBufferAvailable}; OH_AVCodecAsyncCallback cb = {&OnError, &OnStreamChanged, &OnNeedInputData, &OnNeedOutputData};
// 配置异步回调 // 配置异步回调
int32_t ret = OH_AudioEncoder_SetCallback(audioEnc, cb, userData); int32_t ret = OH_AudioEncoder_SetCallback(audioEnc, cb, userData);
``` ```
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册