星期五, 6月 30, 2006

ffmeg - continue

ffmpeg.c 部份:

SIGSEGV (Segment fault) : access 一個無效的memory address時,會觸發這個signal。

從原av_encode( ) local variable 中分出來的變數:
AVInputStream  : *ist, **ist_table
AVOutputStream : *ost, **ost_table
AVInputFile : *file_table
原ffmpeg.c中..
av_encode - 作decode-encode的function

for(;receive_sigterm==0;){

由pts找到現在要decode/encode的input - file_index

av_read_frame(input_files[file_index], &pkt)
讀出一個frame的packet。

計算out stream的delta time

output_packet(ist, ist_index, ost_table, nb_ostream, *pkt)
decode pkt to picture : avcodec_decode_video
encode picture : do_video_out
encode的動作: do_video_out
 img_convert : convert source pixel format to output pixel format.
這個ffmpeg內建一個各format互轉的function table : convert_table. @_@ 真是寶庫.

img_resample : ~

avcodec_encode_video : 把處理完後的 big_pitcure encode後放到bit_buffer

av_interleave_write_frame : 把 pkt(就是bit_buffer) 包裝後寫入out stream
.

沒有留言:

張貼留言