有一段程式碼是為了結束程式所要使用的
// will interrupt blocking functions if we quit! url_set_interrupt_cb(decode_interrupt_cb); int decode_interrupt_cb(void) { return (global_video_state && global_video_state->quit); }
但是因為 url_set_interrupt_cb 在 FFmpeg-1.0 中已經不再使用了,所以要改成下面的方式
int decode_interrupt_cb(void *ctx) { return (global_video_state && global_video_state->quit); } static const AVIOInterruptCB int_cb = { decode_interrupt_cb, NULL }; pFormatCtx->interrupt_callback = int_cb;
其中 AVIOInterruptCB int_cb = { decode_interrupt_cb, NULL } 要宣告在全域範圍,pFormatCtx->interrupt_callback = int_cb 就在 main() 裡指定。
另外有2個函式也必須修改
url_ferror(&pFormatCtx->pb)
要改成
pFormatCtx->pb->error
而
pstrcpy(is->filename, sizeof(is->filename), argv[1]);
要改成
av_strlcpy(is->filename, argv[1], sizeof(is->filename));
有時候改程式的時候,真的要小心點,我在驗證功能時,不小心把某一行程式註解掉了,但是一樣可以正常編譯,執行的時候卻發現一直有問題,找了好久才發現。
沒有留言:
張貼留言