Hi. The different devices ffmpeg supports have different options, I am interested in the 'list_formats' of the decklink devices. Using the ffmpeg.exe tool the following command:
ffmpeg -f decklink -list_formats 1 -i 'Intensity Pro' prints the formats that can be used with the device. I want to recover this information from my program which uses the libav libraries. My current solution looks like this. std::string formatListing; int main(int argc, char* argv[]) { av_log_set_level(AV_LOG_VERBOSE); av_log_set_callback(my_log_callback); AVInputFormat* inpF = av_find_input_format("decklink"); AVFormatContext* ifmt_ctx = avformat_alloc_context(); AVDictionary* options = NULL; av_dict_set(&options, "list_formats", "1", NULL); avformat_open_input(&ifmt_ctx, deviceName.c_str(), inpF, &options); ........... // Parse the string in formatListing. } void my_log_callback(void *ptr, int level, const char *fmt, va_list vl) { AVClass* avc = ptr ? *(AVClass **) ptr : NULL; std::string className = avc ? avc->item_name(ptr) : ""; if (className == "decklink") { char buf[500]; vsnprintf(buf, 500, fmt, vl); formatListing += buf; } if (avc != NULL) const char* aux = avc->item_name(ptr); av_log_default_callback(ptr, level, fmt, vl); } This code works fine, but I don't like it. Is there a more elegant solution to this which doesn't involve a log callback? Thanks.
_______________________________________________ Libav-user mailing list Libav-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/libav-user