Я хочу получить доступ к некоторым членам моего AVCodecContext *av_ctx
в моей программе. Хорошо, когда я компилирую его в 32-битной версии, но когда я изменяю его на 64-битную, эти элементы действуют так, как будто они смещены.
Например, я хочу получить av_ctx->coded_width
а также av_ctx->coded_height
(иногда они отличаются от av_ctx->width
а также av_ctx->height
) и сохраните их в некоторых переменных. Теперь, когда я отлаживаю эту программу в 32-битной версии, все в порядке, но в 64-битной версии это неверные значения, и когда я проверяю свою структуру, я вижу следующие два элемента (av_ctx->gop_size
а также av_ctx->pix_fmt
) имеет значения, которые я хочу.
Я проверил AVCodecContext
декларация о avcodec.h
и это (в комментариях выше объявления структуры) говорит:
Пожалуйста, используйте AVOptions (av_opt * / av_set / get * ()) для доступа к этим полям из пользовательских приложений.
Я думаю, что это может быть правильным способом получить эти элементы, но я не знаю, что это AVOptions, Я искал это, но не мог найти то, что это точно и как я могу использовать это.
int64_t cheight = 0;
av_opt_set_int(av_ctx,"coded_height", 400, 0);
av_opt_get_int(av_ctx,"coded_height", 0, &cheight);
Может быть, вы можете попробовать это.
Других решений пока нет …