gpt4 book ai didi

android - 语句无效 'AVPacket'

转载 作者:太空宇宙 更新时间:2023-11-04 07:24:10 25 4
gpt4 key购买 nike

我正在使用 android NDK 和 FFmpeg native 库开发解码器。我已经使用 Android 工具为项目提供了原生支持,并且我在 videodecoder.cpp 文件中有 C 代码。在文件中,以下函数给了我这个问题

JNIEXPORT jint Java_ssrp_android_ffmpegdecoder_H264Decoder_consumeNalUnitsFromDirectBuffer(
JNIEnv* env, jobject thiz, jobject nal_units, jint num_bytes,
jlong pkt_pts) {
DecoderContext *ctx = get_ctx(env, thiz);

void *buf = NULL;
if (nal_units == NULL) {
D("Received null buffer, sending empty packet to decoder");
} else {
buf = env->GetDirectBufferAddress(nal_units);
if (buf == NULL) {
D("Error getting direct buffer address");
return -1;
}
}

AVPacket packet = {.data = (uint8_t*) buf, .size = num_bytes, .pts = pkt_pts };

int frameFinished = 0;
int res = avcodec_decode_video2(ctx->codec_ctx, ctx->src_frame,&frameFinished, &packet);

if (frameFinished)
ctx->frame_ready = 1;

return res;
}

在行 AVPacket packet = {.data = (uint8_t*) buf, .size = num_bytes, .pts = pkt_pts };

它说`Statement has no effect "AVPAcket"and

在行 int res = avcodec_decode_video2(ctx->codec_ctx, ctx->src_frame,&frameFinished, &packet);

它说 无效参数 '
候选人是:
int avcodec_decode_video2(AVCodecContext *, AVFrame *, int *, const AVPacket *)'

最佳答案

问题是

AVPacket packet = {.data = (uint8_t*) buf, .size = num_bytes, .pts = pkt_pts }

因为编译器不理解类型/初始化。这会导致无效参数错误。也许将行拆分为:

AVPacket packet;
packet.data = (uint8_t*) buf;
packet.size = num_bytes;
packet.pts = pkt_pts;

这应该会得到更清晰的错误输出。

关于android - 语句无效 'AVPacket',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19576029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com