看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) C 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) math.h memory.h 問題(Question): 小弟目前對兩張yuv格式的圖 做Motion estimation,經過ME後會產生MV及residualdata 我寫完residual data 可編譯但執行直接死當 一直找不出錯誤 ~_~ 餵入的資料(Input): 一張reference的yuv檔 一張current的yuv檔 預期的正確結果(Expected Output): 可執行。 錯誤結果(Wrong Output): 但直接死當 程式碼(Code):(請善用置底文網頁, 記得排版) http://codepad.org/TROWEyfi 貼到CodePad方便大大們看>"< 若把residual註解掉,則程式可執行,而且也可以把MV匯出到txt,但只要加了residual 就死當,我後來把 (**)那行換成簡單的printf也不行,有點搞不清楚到底哪裡錯= = 請鄉民幫忙提點了QQ MV[u][v].maxi , MV[u][v].max_j 是我用來存每個與ref block最像的位置,而且 我宣告成整數,我之前也懷疑過這裡,於是我寫新的變數來代替它,還是死當= = -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.234.185
diabloevagto:記憶體超出邊界? 08/26 20:21
kaomark:(**)那邊 group_cur[][] 兩個都是MV[u][v].max_i 怪怪的? 08/26 20:43
ericinttu:(**)那行換成簡單的printf也不行 08/26 20:43
ericinttu:那有可能是之前就有問題了? 08/26 20:44
heymei0421:可是我註解掉residual那整堆,是可以執行的說 = = 08/26 21:03
※ 編輯: heymei0421 來自: 140.113.234.185 (08/26 21:05)
ericinttu:你開一個空的程式, 放進去最後一段4層 for-loops, 08/26 21:13
ericinttu:裡面的程式用你把(**)換成printf() 08/26 21:13
ericinttu:我想不出什麼原因會使得這樣的程式不能跑? 08/26 21:14
firejox:你不覺得有好好的貼code的網站不用很可惜嗎... 08/26 21:16
firejox:他還幫你上色呀 08/26 21:17
firejox:我覺得這只會跑很久耶... 08/26 21:18
ericinttu:測試問題的時候,忌諱的是問題測半套(另外一半是自己動過 08/26 21:20
※ 編輯: heymei0421 來自: 114.37.163.25 (08/26 21:25)
kaomark:所以你用group_cur[MV[u][v].max_i][MV[u][v].max_j]也錯? 08/26 21:30
kaomark:那就是MV[][]的問題吧 你的max從temp_array[0][0]開始比較 08/26 21:30
kaomark:如果temp_array[0][0]就是最大值 那max_i max_j就沒給值了 08/26 21:30
firejox:你跑1 到 160579584 (要輸出)要多久 08/26 21:32
ericinttu:你可以拒絕當測試人員啊 我只是根據原po給的資料來分析 08/26 21:34
ericinttu:問題會出現在哪邊. 08/26 21:34
heymei0421:現在有不可以編譯了= =好像try太多次結果有些東西 08/26 21:40
heymei0421:忘了改回來Orz 08/26 21:40
※ 編輯: heymei0421 來自: 114.37.163.25 (08/26 21:54)
heymei0421:謝謝k大提醒^^ 08/26 21:54
Favonia:嚴格來說不能用 memset, 不過我想你有其他嚴重問題要解決 08/26 22:07
firejox:memset ? 為何 08/26 22:24
Favonia:對不起是我的錯。用 unsigned char 沒事不用擔心。 08/26 22:28
Favonia:最近常常因為看太快造成別人困擾,真不好意思 orz 08/26 22:59