2016-05-06 26 views
0

沒有爲聲明視頻大小的選項:AVOption選項爲視頻大小部件

av_dict_set(&options, "video_size", "1920x1080", 0); 

是否有大小組件的任何等價的選項?像:

av_dict_set_int(&options, VIDEO_WIDTH_OPT_STR , 1920, 0); 
av_dict_set_int(&options, VIDEO_HEIGHT_OPT_STR, 1080, 0); 

這些宏(如果有的話)的值是什麼?

#define VIDEO_WIDTH_OPT_STR "?" 
#define VIDEO_HEIGHT_OPT_STR "?" 

請注意,我所知道的man snprintf,那不是我的關心,謝謝。

回答

2

你可以在字典中添加任何你想要的東西,它只是一個容器。例如,video_size被解析爲使用它的格式的兩個整數。請參見libavutil/opt.c中的AV_OPT_TYPE_IMAGE_SIZE

您可以爲一個班級定義自己的選項(AVOption)。所以沒有什麼能阻止你添加兩個選項,如video_widthvideo_height,並通過字典對它們進行初始化。

static const AVOption options[] = { 
    { "video_width", "frame width", OFFSET(width), AV_OPT_TYPE_INT, {.i64 = -1 }, -1, INT_MAX, DEC }, 
    { "video_height", "frame height", OFFSET(height), AV_OPT_TYPE_INT, {.i64 = -1 }, -1, INT_MAX, DEC }, 
    { NULL } 
}; 

static const AVClass some_class = { 
    [...] 
    .option  = options, 
    [...] 
} 

其中widthheight是由您的格式使用的結構成員。

+0

有趣,謝謝。 – sharpener