日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

【Android FFMPEG 开发】FFMPEG 方法中指针类型参数说明 ( 一维指针类型参数 | 二维指针类型参数 )

發(fā)布時(shí)間:2025/6/17 Android 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android FFMPEG 开发】FFMPEG 方法中指针类型参数说明 ( 一维指针类型参数 | 二维指针类型参数 ) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

        • I . 一維指針類(lèi)型參數(shù)
        • II . 二維指針類(lèi)型參數(shù)



I . 一維指針類(lèi)型參數(shù)



1 . 音視頻流數(shù)據(jù)包獲取 :

//讀取數(shù)據(jù)包AVPacket *avPacket = av_packet_alloc();av_read_frame(formatContext, avPacket);

① 創(chuàng)建并初始化結(jié)構(gòu)體指針 : AVPacket *avPacket = av_packet_alloc() , 該結(jié)構(gòu)體是一個(gè)一維指針 ;

② 讀取數(shù)據(jù)包 : av_read_frame(formatContext, avPacket) , 讀取音視頻流中的數(shù)據(jù)包 , 并存放到 AVPacket *avPacket 指針指向的結(jié)構(gòu)體中 ;


2 . av_read_frame 函數(shù)原型 :

int av_read_frame(AVFormatContext *s, AVPacket *pkt);

① 一維指針參數(shù) : av_read_frame ( ) 方法 , 接收的 AVPacket *pkt 是一個(gè)一維指針參數(shù) , AVPacket 是一個(gè)結(jié)構(gòu)體 , AVPacket * 是結(jié)構(gòu)體指針 , 該指針指向一個(gè) AVPacket 結(jié)構(gòu)體 ;

② 一維指針參數(shù)可操作內(nèi)容分析 : 在 av_read_frame ( ) 方法內(nèi)部是不能修改 AVPacket *pkt 參數(shù)的結(jié)構(gòu)體指針的指向的 , 如果修改了 AVPacket *pkt 結(jié)構(gòu)體指針的指向 , 對(duì)外部的已經(jīng)初始化過(guò)的 AVPacket *avPacket = av_packet_alloc() 結(jié)構(gòu)體指針是不能造成影響的 , 這種操作無(wú)意義 ;

③ 傳入的一維指針要求 : 這種情況下傳入的指針必須經(jīng)過(guò)初始化才行 , 在方法中只修改指針指向結(jié)構(gòu)體的元素的值 ;


3 . 原理分析 ( 修改一維指針值 ) :


① 傳入副本 : 將 AVPacket *avPacket 作為參數(shù)傳入 av_read_frame ( ) 方法 , 僅僅是將指針的一個(gè)副本傳入了方法 ;

② 修改指針值無(wú)意義 : 對(duì)傳入的 AVPacket *pkt 指針參數(shù)的地址進(jìn)行修改沒(méi)有意義 , 在方法中如果修改了傳入的指針的地址 , 僅僅是將傳入的副本的值改變了 , 之后的一系列修改都是針對(duì)一個(gè)副本的值進(jìn)行的 ;

③ 不影響外部變量 : 函數(shù)作用于結(jié)束后 , 該副本的聲明周期也就結(jié)束了 , 與外部的 AVPacket *avPacket 沒(méi)有任何關(guān)系 ;


4 . 原理分析 ( 修改一維指針指向的結(jié)構(gòu)體的內(nèi)容 ) :


① 傳入副本 : 將 AVPacket *avPacket 作為參數(shù)傳入 av_read_frame ( ) 方法 , 傳入該指針副本作為參數(shù) ;

② 指向同一塊內(nèi)存 : 但是 AVPacket *avPacket 指針 , 與 AVPacket *pkt 副本參數(shù)指針 , 指向的內(nèi)存是同一塊內(nèi)存 ;

③ 影響外部變量 : 如果使用 AVPacket *pkt 參數(shù)的一維指針 ( 副本值 ) 修改該內(nèi)存中的值 , 那么該內(nèi)存中的值會(huì)被改變 , 此時(shí)外部指針 AVPacket *avPacket 指針指向的內(nèi)存的值也會(huì)被改變 ;


5 . 結(jié)論 :


① 一維指針參數(shù) : 傳入一維指針 , 只能修改指向的內(nèi)存的內(nèi)容 ; 修改一維指針本身指向無(wú)意義 ;

② 二維指針參數(shù) : 傳入 二維指針 , 只能修改一維指針 及 以下的內(nèi)容 ; 修改二維指針本身指向無(wú)意義 ;

③ N 維指針參數(shù) : 傳入 N 維指針 , 只能修改 N - 1 維指針 及 以下的內(nèi)容 , 修改 N 維指針內(nèi)容 無(wú)意義 ;



II . 二維指針類(lèi)型參數(shù)



1 . 打開(kāi)音視頻地址 :

AVFormatContext *formatContext = 0; int open_result = avformat_open_input(&formatContext, dataSource, 0, 0);

① 未初始化的空指針 : AVFormatContext *formatContext 結(jié)構(gòu)體指針沒(méi)有進(jìn)行初始化 , 是個(gè)空指針 ;

② 二維指針參數(shù) : avformat_open_input ( ) 方法傳入的是 AVFormatContext ** 二維指針參數(shù) , 目的是為了在方法中對(duì) AVFormatContext * 進(jìn)行初始化 , 初始化完成后 , 在傳遞到函數(shù)外部使用 ;


2 . avformat_open_input ( ) 函數(shù)原型 :

int avformat_open_input(AVFormatContext **ps, const char *url, AVInputFormat *fmt, AVDictionary **options);

這里我們只關(guān)心 AVFormatContext **ps 二維指針參數(shù) ;


3 . 二維指針參數(shù) : 此處傳入二維指針參數(shù) , 二維指針的指向是副本改變沒(méi)有任何意義 , 該二維指針副本 AVFormatContext **ps 參數(shù)指向的是 AVFormatContext *formatContext 的一維指針變量地址 ( 二維指針 ) , 該二維指針地址不可修改 , 但是可以修改二維指針指向的一維指針的地址 , 即在方法中重新初始化一個(gè) AVFormatContext *結(jié)構(gòu)體指針變量 , 用該二維指針指向它 ,


4 . 外部的一維指針 : AVFormatContext *formatContext 是外部的 AVFormatContext 結(jié)構(gòu)體指針 , 地址值為 A1 , 指向 AVFormatContext 結(jié)構(gòu)體 ;


5 . 外部的一維指針?biāo)诘膬?nèi)存地址 : &formatContext 是二維指針地址值為 A2 , 指向 AVFormatContext *formatContext 一維指針的地址 A1 ( 存儲(chǔ)的是指向的結(jié)構(gòu)體地址 , 目前沒(méi)有初始化是空指針 ) ;


6 . 方法內(nèi)部修改二維指針指向的一維指針 : 在方法中需要?jiǎng)?chuàng)建并初始化 AVFormatContext 結(jié)構(gòu)體 , 地址是 A11 , 將該地址賦值給 A2 指向的內(nèi)存地址中 , 外部的 AVFormatContext *formatContext 一維指針地址就被修改成了 A11 ;


7 . 結(jié)論 : 傳入二維指針參數(shù) , 二維指針本身修改無(wú)意義 , 修改二維指針指向的一維指針 , 可以影響外部的一維指針 ;

總結(jié)

以上是生活随笔為你收集整理的【Android FFMPEG 开发】FFMPEG 方法中指针类型参数说明 ( 一维指针类型参数 | 二维指针类型参数 )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。