Baikal Electronicsã®ååã¯ãBaikal-T1 [ L1 ]ããã»ããµã䜿çšããŠã圌ãã®å°è±¡ã«ã€ããŠæžããŠãããšç³ãåºãŸããã 圌ãã«ãšã£ãŠãããã¯éçºè
ã«èªåã®ããã»ããµã®æ©èœãšç¹åŸŽãäŒããæ¹æ³ã§ãã ç§ã«ãšã£ãŠ-äŸãã°ãMIPSfpga-plus [ L2 ]ãããžã§ã¯ãã«æ°ããæ©èœãè¿œå ããŠãçŸä»£ã®ããã»ããµã³ã¢ã§ã·ã¹ãã ãç¥ããå°æ¥ãããå°ããªãèªè»¢è»ããçºæããæ©äŒã ããŠãéåžžã®ãšã³ãžãã¢ãªã³ã°ã®å¥œå¥å¿ãåã³...
ä»æ¥ã¯ãMIPS Warrior P-class P5600 [ L3 ]ã³ã¢ã§å©çšå¯èœãªMIPS SIMDã¢ãŒããã¯ãã£ã®ãã¯ãã«æ¡åŒµã«ã€ããŠèª¬æããŸããããã¯ãBaikal-T1ããã»ããµã«ãååšããããšãæå³ããŸãã ãã®èšäºã¯ãéçºè
ã察象ã«ããŠããŸãã

ã¯ããã«
ã»ãšãã©ã®å Žåãç¹å®ã®ããã€ã¹ïŒããã€ã¹/ããŒããŠã§ã¢/ãœãããŠã§ã¢ããã³ããŒããŠã§ã¢ã³ã³ãã¬ãã¯ã¹ãªã©ïŒã®éçºã«äŒŽããããžã¿ã«ããã³ã¢ããã°ä¿¡å·ã®åŠçã®åé¡ã®è§£æ±ºçãé¢é£ä»ããããŠããŸãã å
¥åã«ã¯ãã»ã³ãµãŒã®æž¬å®å€ãå
¥å/åºåããã€ã¹ããã®ä¿¡å·ããã£ã¹ã¯äžã®ãã¡ã€ã«ããã®æ
å ±ãªã©ãå«ãŸããŸãã åºåïŒã¢ãã¿ãŒäžã®ç»åãã¹ããŒã«ãŒããã®é³ãé§åå¶åŸ¡ä¿¡å·ãããã·ã¥ããŒãäžã®ã€ã³ãžã±ãŒã¿ãŒã®è¡šç€ºãªã©ãããã³ãå
¥åãšåºåã®éã-ç¹å®ã®æ°åŠçæäœã®ã»ããã
ãã®ãããŒããŠã§ã¢ã§ã®æ°åŠããå®è£
ããæ¹æ³ãç°¡åã«ãªã¹ããããšãéçºè
ãäžç·ã«ãŸãã¯å¥ã
ã«é©çšã§ãã次ã®ããŒã«ã®ãªã¹ããåŸãããŸãã
- ã¢ããã°åè·¯ã®åœ¢ã§ã®å®è£
ã
- ãã€ã¯ãã³ã³ãããŒã©ãŒã§ã®ãœãããŠã§ã¢å®è£
ã
- FPGAå®è£
- ã·ã¹ãã ãªã³ãããã®åœ¢ã§ã®ããŒããŠã§ã¢ãšãœãããŠã§ã¢ã®å®è£
- ããžã¿ã«ä¿¡å·ããã»ããµã®äœ¿çš
- æ±çšããã»ããµãœãããŠã§ã¢ã®å®è£
- ã°ã©ãã£ãã¯ã¹ã³ã³ãããŒã©ãŒã䜿çšãã
åããªã¹ãã§ããããã詳现ã«ã¢ããã°åè·¯ã®åœ¢ã§ã®å®è£
ããžã¿ã«æ©åšã®åªäœæ§ã«ãããããããäžçãšäººéã®æèŠã¯äŸç¶ãšããŠã¢ããã°ã®ãŸãŸã§ãã 奜ããšå¥œãŸãããšã«ããããããæ
å ±ãããžã¿ã«åœ¢åŒã§ãæä»çã«ãåŠçããå Žåã§ããADCã«å
¥ãåã«ãã£ã«ã¿ãèšå®ããå¿
èŠããããŸãã åæ§ã«ãã¢ããã°ã³ã³ããŒãã³ãã«ã¯ãç©ååšã埮ååšãå ç®åšãªã©ãå®è£
ã§ããŸãã ã¢ããã°ãšã¬ã¯ãããã¯ã¹ã®åªäœæ§ã®æ°å幎ã«ããã£ãŠããšã³ãžãã¢ã¯ããŸããŸãªåé¡ã解決ããããã«èšå€§ãªçµéšãç©ãã§ãããåªããéçºè
ïŒããžã¿ã«ãšã¬ã¯ãããã¯ã¹ã§ããïŒã¯ãã®éºç£ãèæ
®ã«å
¥ããŠããŸã[ D1 ]ã
ãã€ã¯ãã³ã³ãããŒã©ãŒãœãããŠã§ã¢ã®å®è£
åŠçãããä¿¡å·ã¯ã»ãšãã©ãªããæ°åŠã¯è€éã§ã¯ãªããããªãœãŒã¹ãå¿
èŠãšããŸãããïŒ ãã®å ŽåãADCãäœåäœåšæ³¢æ°ãããã³çãšããªãã·ã§ã³ãåããæ¯èŒçå®äŸ¡ãªãã€ã¯ãã³ã³ãããŒã©ãŒã¯éåžžã«éžæè¢ã§ãã å¿
èŠã«å¿ããŠãããã«ããã¯ãã¢ã»ã³ãã©ãŒã§èšè¿°ã§ããŸãã
FPGAå®è£
é床ã䞊ååŠçãã¹ã±ãŒãªã³ã°ã®ãœãªã¥ãŒã·ã§ã³ã«é«ãèŠä»¶ãããå Žåãæ°åŠãVerilogãŸãã¯VHDLã®ã¢ãžã¥ãŒã«ãšããŠèª¬æããåŠçã«å¿
èŠãªåšæ³¢æ°ã§åäœã§ããFPGAãéžæããŸãã ãœãªã¥ãŒã·ã§ã³ãéåžžã«æåãããã®å¹
åºãè€è£œã«æå³ãããå Žå-ASIC [ L3 ]ã®äžçãžããããã
ã·ã¹ãã ãªã³ãããã®åœ¢ã§ã®ããŒããŠã§ã¢ãšãœãããŠã§ã¢ã®å®è£
ã·ã¹ãã ã¯è€éãããŠå®å
šã«Verilogã§èšè¿°ããããšã¯ã§ããŸãããå¥ã®ããžãã¯ãé«çŽèšèªã§ããã°ã©ãã³ã°ããå®éã«ãã¹ãŠãLinuxãã管çããŸããïŒ ãã®å Žåããœãªã¥ãŒã·ã§ã³ã¯SoCïŒSystem-on-a-ChipãSoCïŒã§ããå®æããããã»ããµã³ã¢ïŒNios IIãMIPSfpgaãªã©ïŒãååŸããå¿
èŠãªåšèŸºã¢ãžã¥ãŒã«ã§éã¿ä»ãããŸããããªãããŒãªæ°åŠãå®è¡ããŸãã äžéšã®æäœã¯ãããã»ããµãŒåœä»€[ L4 ]ãšããŠäœ¿çšå¯èœã«ã§ããŸãã ã¯ããå°æ¥ãããã¯ASICã§ãå®è£
ã§ããŸãã
ããžã¿ã«ä¿¡å·ããã»ããµïŒDSPïŒã®äœ¿çš
å®éãããã§ã¯ãããã»ããµã³ã¢ãç¬èªã®åšèŸºæ©åšãããã³é«éããžã¿ã«ä¿¡å·åŠçå°çšã®ã³ãã³ãã»ãããåããæ¢è£œã®ãããã賌å
¥ããŸãã ãã®åšãã«ã決å®[ L10 ã L5 ]ãæ§ç¯ããŸãã
æ±çšããã»ããµãœãããŠã§ã¢ã®å®è£
åããã»ããµã¡ãŒã«ãŒã¯ãç¹å®ã®æ°åŠæŒç®ã®ããã©ãŒãã³ã¹ãæé©åããç¬èªã®ã¢ãŒããã¯ãã£ãœãªã¥ãŒã·ã§ã³ãæäŸããŠããŸãã ãŸãããœãããŠã§ã¢éçºè
ã®ã¿ã¹ã¯ã¯ãå¿
èŠã«å¿ããŠãã¡ãŒã«ãŒãæäŸããæ©èœã䜿çšããŠèšç®ãé«éåããããšã§ãã ããã¯ã以äžã®MIPSããã»ããµã§èª¬æãããã®ã§ãã
- ã³ã³ãã¥ãŒãã£ã³ã°ã«ã°ã©ãã£ãã¯ã³ã³ãããŒã©ãŒã䜿çšãã
çŸåšã®ãªã¹ããããå®å
šã«ããããã«ãæãè€éã§ãªãœãŒã¹ã倧éã«æ¶è²»ããèšç®ããããªã«ãŒã[ L6 ã L7 ]ã«å
¥ããå¯èœæ§ã«èšåããããšãå¿ããªãã§ãã ããã
å®ç§ãªããŒã«ã¯ãããŸããã æé©ãªããŒã«ã¯ããããžã§ã¯ãããŒã ãå¿
èŠãªèœåãæã¡ãå©çšå¯èœãªããŸãã¯æå°éã®ã³ã¹ãã§å
¥æã§ããã蚱容å¯èœãªæéæ å
ã§åé¡ã®è§£æ±ºãä¿èšŒããããŒã«ã§ãã äºç®ã®æ±ºå®ã顧客ã®èŠä»¶ããããŠæã«ã¯æ¿æ²»ççç±ããã®ãããªæ±ºå®ã®æ¡çšã«èª²ããããŸãã
ãã®èšäºããMIPS SIMDãã¯ãããžãå©çšå¯èœãªMIPSã³ã¢ã«åºã¥ããŠæ§ç¯ããããã€ã«ã«T1ããã»ããµãŸãã¯ãã®ä»ã®ç¹å®ã®èšç®ã®ããã©ãŒãã³ã¹ãæé©åããå¿
èŠã«çŽé¢ããŠããèªè
ãžã®å
¥éæžãšããŠåœ¹ç«ã€ããšãé¡ã£ãŠããŸãã
èšç®ãªãœãŒã¹
次ã«é²ãåã«ãããžã¿ã«ä¿¡å·åŠçïŒDSPïŒã®äžè¬çãªã¿ã¹ã¯ã®1ã€ã§ãããã£ã«ã¿ãªã³ã°ãæ€èšããŠãã ããã äŸãšããŠãæéã€ã³ãã«ã¹å¿çïŒFIRãFIRãæéã€ã³ãã«ã¹å¿çïŒ[ L8 ]ã®ãã£ã«ã¿ãŒã䜿çšããŸãã DSPã®çè«ãšæ°åŠçèšç®ãæãäžããããšãªããäž»ãªãã®ã«æ³šç®ããŸã-ãã®ã¿ã€ãã®ããžã¿ã«ãã£ã«ã¿ãŒã説æããæ¹çšåŒïŒ

ããã§ã xïŒnïŒã¯å
¥åä¿¡å·ã yïŒnïŒã¯åºåä¿¡å·ã Pã¯ãã£ã«ã¿ãŒæ¬¡æ°ã biã¯ãã£ã«ã¿ãŒä¿æ°ã§ãã åãåŒã次ã®ããã«æžãããšãã§ããŸãã

ãã®å Žåãå
¥åä¿¡å·xïŒnïŒã®æ§è³ªãç¡èŠããŸãã ãããADCããååŸããããŒã¿ãšããŸãããåãæåãåããŠããã¡ã€ã«ããèªã¿åãããšãã§ããŸãã ãã®å Žåãç§ãã¡ã«ãšã£ãŠã¯éèŠã§ã¯ãããŸããã çŸåšã®èšäºã¯ãDSPã«ã€ããŠãã§ã¯ãªããèšç®ã«ã€ããŠãã§ããããããã£ã«ã¿ãŒããžãã¯ã«é£ã³èŸŒãã®ã§ã¯ãªãããªã³ã©ã€ã³ãµãŒãã¹ã®1ã€ã䜿çšããŠä¿æ°ãèšç®ããŸã[ L9 ]ïŒ
ç®çã®ãã£ã«ã¿ãªã³ã°ãã©ã¡ãŒã¿ãŒïŒããšãã°ãå®çŸ©æžã¿ãªãã·ã§ã³ã®ããããïŒãã³ãã¹ããã-ããããã£ã«ã¿ãŒ[ L11 ]ïŒãèšå®ãã[ãã£ã«ã¿ãŒã®èšèš]ãã¿ã³ãã¯ãªãã¯ããŸãã

èšç®ã®çµæã¯ããã£ã«ã¿ãŒ[ L12 ]ã®åšæ³¢æ°å¿çã§ãã
ãã£ã«ã¿ãŒåšæ³¢æ°å¿ç ä¿æ°ãšãœãŒã¹ã³ãŒãã®ã»ããïŒ
SampleFilter.h#ifndef SAMPLEFILTER_H_ #define SAMPLEFILTER_H_ #define SAMPLEFILTER_TAP_NUM 25 typedef struct { double history[SAMPLEFILTER_TAP_NUM]; unsigned int last_index; } SampleFilter; void SampleFilter_init(SampleFilter* f); void SampleFilter_put(SampleFilter* f, double input); double SampleFilter_get(SampleFilter* f); #endif
SampleFilter.s #include "SampleFilter.h" static double filter_taps[SAMPLEFILTER_TAP_NUM] = { 0.037391727827352596, -0.03299884552335979, 0.044230583967321345, 0.0023050970833628304, -0.06768087195950104, -0.046347105409124706, -0.011717387509232432, -0.0707342284185183, -0.049766517282999544, 0.16086413543836361, 0.21561058688743148, -0.10159456907827959, 0.6638637561392535, -0.10159456907827959, 0.21561058688743148, 0.16086413543836361, -0.049766517282999544, -0.0707342284185183, -0.011717387509232432, -0.046347105409124706, -0.06768087195950104, 0.0023050970833628304, 0.044230583967321345, -0.03299884552335979, 0.037391727827352596 }; void SampleFilter_init(SampleFilter* f) { int i; for(i = 0; i < SAMPLEFILTER_TAP_NUM; ++i) f->history[i] = 0; f->last_index = 0; } void SampleFilter_put(SampleFilter* f, double input) { f->history[f->last_index++] = input; if(f->last_index == SAMPLEFILTER_TAP_NUM) f->last_index = 0; } double SampleFilter_get(SampleFilter* f) { double acc = 0; int index = f->last_index, i; for(i = 0; i < SAMPLEFILTER_TAP_NUM; ++i) { index = index != 0 ? index-1 : SAMPLEFILTER_TAP_NUM-1; acc += f->history[index] * filter_taps[i]; }; return acc; }
ãã£ã«ã¿ãŒãã©ã¡ãŒã¿ãŒã SampleFilter_geté¢æ°ãèŠãŠãäžèšã®FIRãã£ã«ã¿ãŒåŒãæãåºããŠãæãéèŠãªç¹ã«æ³šæããŠãã ããã
- ãã®ãµã³ãã«ã§ã¯SampleFilter_geté¢æ°ã®1åã®åŒã³åºãã«çžåœãã1ã€ã®ãµã³ãã«yïŒnïŒãååŸããã«ã¯ã 25åã®å
¥åãµã³ãã«xïŒnïŒãã«ãŒãã§åŠçããå¿
èŠããããŸãïŒãã£ã«ã¿ãŒã®é åºãã€ã³ã¿ãŒãã§ã€ã¹ã®ã¹ã¯ãªãŒã³ã·ã§ããã®ãã¯ãSAMPLEFILTER_TAP_NUMãšãtapsããåç
§ïŒ
- ãã®åŠçããªã³ã¶ãã©ã€ã§å®è¡ããå ŽåïŒããšãã°ãADCããxïŒnïŒãå°çãããšãïŒããµã³ããªã³ã°åšæ³¢æ°ïŒãã®å Žåã¯2000HzïŒãèæ
®ããŠåŠçããå¿
èŠããããŸãã
- ãããã®25åã®ãµã³ãã«xïŒnïŒã®ããããã«ã€ããŠãäžé£ã®æ°åŠæŒç®ãå®è¡ããŸããããã«å¯Ÿå¿ããä¿æ°ãä¹ç®ããã¢ãã¥ã ã¬ãŒã¿ã¬ãžã¹ã¿ã«å ç®ããŸãã ããã«ãã¡ã¢ãªããã®èªã¿åã/æžã蟌ã¿ã«é¢é£ããæäœãå¿ããªãã§ãã ãããããã«ãæéãããããŸãã
ããã§ãããã€ãã®å®¢èŠ³çãªçç±ã§åé¡ã®æ¡ä»¶ãæ確ã«ãªã£ããšä»®å®ããŸãã

ãã®çµæã次ã®åšæ³¢æ°å¿çãåŸãããŸãã
ãã£ã«ã¿ãŒåšæ³¢æ°å¿ç ç§ãã¡ã«ãšã£ãŠéèŠãªã®ã¯ïŒ
- ãµã³ããªã³ã°åšæ³¢æ°ã4000Hzã«å¢å ãããããçµæãããã«ååŸãããå Žåãèšç®ã«è²»ããããšãã§ããæéã¯2åã®1ã«ççž®ãããŸãã
- å埩åæ°ïŒã¿ããããã£ã«ã¿ãŒæ¬¡æ°ïŒã¯ã»ãŒ3åã«å¢å ããŸããïŒ25ãã67ïŒã åšæ³¢æ°å¿çã®äžåäžæ§ã®ãã©ã¡ãŒã¿ãŒã«å€æŽãå ããªãå ŽåïŒãªããã«/å±æ§= 5 dBãæ®ãïŒãç¹°ãè¿ãåæ°ã¯2åã«å¢ããŸãã
- ãããã£ãŠããã£ã«ã¿ãªã³ã°ãã©ã¡ãŒã¿ã®ããããªå€æŽã«ãããèšç®ãªãœãŒã¹ã®æ¶è²»ã6åïŒãŸãã¯4ïŒå¢å ããŸããã
ãã®äŸã§ç€ºãããŠãããã£ã«ã¿ãŒãã©ã¡ãŒã¿ãŒã®çµ¶å¯Ÿå€ã«æ³šæãæã£ãŠæ¬²ãããããŸããã ç§ãäŒãããäž»ãªã¢ã€ãã¢ã¯ãããæç¹ã§ãèšç®ã®ãªãœãŒã¹æ¶è²»ã®å¢å ã以åã«äºæž¬ãããå¶éãè¶
ããå¯èœæ§ããããšããããšã§ãã ãããŠãã¢ã«ãŽãªãºã ããã®ãã©ã¡ãŒã¿ãŒããŸãã¯å
¥åããŒã¿ã«ããããªå€æŽãå ããåŸãããã»ããµãŒã³ã¢ãããŒã¿ã®ãã·ã£ãã«ãã«åŸäºããŠããã ãã§ãä»ã®ã¿ã¹ã¯ã®å®è¡ã¯èšããŸã§ããªãããããè¡ãæéããªãããšãçªç¶å€æããå ŽåããããŸãã æ£åžžã«åŠçãããŸãããäœæãããè² è·ãŸãã¯èšç®ã®æéãã·ã¹ãã ã®èŠä»¶ãæºãããŠããŸããã ãããŠçŸæç¹ã§ã¯ããã€ãŠãªãã»ã©æé©åã®ã¿ã¹ã¯ã«çŽé¢ããŠããŸãã
èšç®é床
ç°¡åãªäŸã§åé¡ãèŠã€ãããããã®è§£æ±ºçãèŠãŠã¿ãŸãããã ããã»ããµã®è£œé å
ã¯ãèšç®ã®é床ãäžããããã«ããã€ãã®ããªãã¯ãèžãã§ããŸãïŒé »åºŠãå¢ãããããã»ããµã³ã¢ã®æ°ãå¢ãããæ°ããã³ãã³ããè¿œå ãããã€ãã©ã€ã³æ§æããã£ãã·ã¥ãµã€ãºãè©Šããããé«éãªãã¹ãšã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããããã«åãæ¿ããŸãã
ãŸããéçºè
ããã¢ã»ã³ãã©ãŒã§æãããã«ããã¯ãå®è£
ããæš©å©ãã³ã³ãã€ã©ãŒãªãã·ã§ã³ãè©Šãæš©å©ãã¢ã«ãŽãªãºã ããªãœãŒã¹éçŽåºŠã®äœããã®ã«å€æŽããæš©å©ããŸãã¯åãç¯å²ã®ãã©ã¡ãŒã¿ãŒã§ããäºæž¬å¯èœãªåäœãããæš©å©ãéçºè
ãã奪ããŸããã
ããã»ããµã¢ãŒããã¯ãã£ã®ãµããŒããªãã§ã¯äœ¿çšã§ããªãåŠçé床ãåäžããã2ã€ã®æ¹æ³ã«çŠç¹ãåœãŠãŠããŸãã
- 1ã€ã®ã³ãã³ãã§è€æ°ã®ç®è¡æŒç®ãçµã¿åãããŸãã
- SIMDã¢ãããŒãã®å®è£
ã
ç®è¡æŒç®ã®çµã¿åãã
ãã£ã«ã¿ãŒã«æ»ãã SampleFilter_geté¢æ°ã®ã³ãŒãã詳ããèŠãŠã¿ãŸãããã
double SampleFilter_get(SampleFilter* f) { double acc = 0; int index = f->last_index, i; for(i = 0; i < SAMPLEFILTER_TAP_NUM; ++i) { index = index != 0 ? index-1 : SAMPLEFILTER_TAP_NUM-1; acc += f->history[index] * filter_taps[i]; }; return acc; }
ãããŠç¹ã«ã©ã€ã³äžïŒ
acc += f->history[index] * filter_taps[i];
ããã§ã¯ã2ã€ã®é£ç¶ããŠå®è¡ãããæäœã確èªããŸããä¿æ°ãä¹ç®ãããã®ã³ãã³ãã®çµæãã¢ãã¥ã ã¬ãŒã¿ãŒå€æ°ã«çŽ¯ç©ããŸãã DSPã¢ã«ãŽãªãºã ã§ã¯ãä¹ç®ãšå ç®ã®åæ§ã®çµã¿åãããéåžžã«äžè¬çã§ãã ãããããããã®2ã€ã®æäœãéåžžã«é »ç¹ã«äºãã«é£æ¥ããŠããå Žåã1ãµã€ã¯ã«å
ã§å®è¡ããã1ã€ã®ããŒã ã«ããããçµåããŠã¿ãŸãããïŒ ãã®ãããªçµåã®ã¢ã€ãã¢ã¯ãé·ãéãšã³ãžãã¢ã®é ã«æµ®ãã³ãŸããã ãã®ãããã³ãã³ãã环ç®ã«ããä¹ç®ããåºçŸãïŒè€åä¹ç®âå ç®ãä¹ç®â环ç©æŒç®ãMACïŒããã¹ãŠã®ããžã¿ã«ã·ã°ãã«ããã»ããµã«ååšããŸãã

SIMDã¢ãããŒã
å察åŽãããœãªã¥ãŒã·ã§ã³ã«ã¢ãããŒãããŸãã ãããŠããªãåãµã³ãã«xïŒnïŒãåå¥ã«åŠçããã®ã§ã¯ãªããããã€ãã®ãµã³ãã«ã1ã€ã®ãã¯ãã«ïŒé
åïŒã«çµåããã«ããã¯ãã«å
šäœã«ãããæ£ç¢ºã«ããã¯ãã«ã®åèŠçŽ ã«åæã«ã³ãã³ããé©çšããå¿
èŠããããŸããïŒ ãã®å Žåã1ãµã€ã¯ã«ïŒã¡ã¢ãªã®åŠçãã«ãŠã³ãããªãïŒã§ãäžåºŠã«è€æ°ã®ãµã³ãã«ãåŠçã§ããŸãã

ãŸããæ倧蚱容ãã¯ãã«ãµã€ãºã倧ããã»ã©ãããŒã¿åŠçé床ãé«ããªããŸãã ãã®èšç®ã®ç·šæã®ååã¯ã SIMD ïŒåäžåœä»€ãè€æ°ããŒã¿ãåäžåœä»€ã¹ããªãŒã ãè€æ°ããŒã¿ã¹ããªãŒã ïŒ[ L13 ]ãšåŒã°ããŸãã ãã¯ãã«ããã»ããµ[ L14 ]ãšã¹ã«ã©ãŒããã»ããµãžã®ãã¯ãã«æ¡åŒµã®äœæ¥ã¯ããã®ã¢ãããŒãã«åºã¥ããŠããŸããx86ã¢ãŒããã¯ãã£ã®å Žåã¯SSEãšAVXãMIPSã¢ãŒããã¯ãã£ã®å Žåã¯MIPS SIMD [ L15 ]ã§ãã
MIPS SIMD
ãã¯ã¿ãŒã¢ãŒããã¯ãã£æ¡åŒµãæ§ç¯ãããåºæ¬ååãç解ããã®ã§ãMIPS SIMDã«çŽæ¥ã¢ã¯ã»ã¹ã§ããŸãã ãã®æ¡åŒµã®å
æ¬çãªèª¬æã¯ããã¥ã¡ã³ã[ D2 ]ã«èšèŒãããŠããŸãããäž»ãªç¹ã«æ³šæããŠãã ããã
æŽæ°æŒç®ããŒã¢ãã㯠| åœä»€ã®èª¬æ |
---|
ADDVãADDVI | è¿œå ãã |
ADD_AãADDS_A | 絶察å€ã®å ç®ãšé£œåå ç® |
ADDS_SãADDS_U | 笊å·ä»ãããã³ç¬Šå·ãªãã®é£œåå ç® |
HADD_SãHADD_U | 笊å·ä»ãããã³ç¬Šå·ãªãã®æ°Žå¹³æ¹åã®è¿œå |
ASUB_SãASUB_U | 笊å·ä»ãããã³ç¬Šå·ãªãæžç®ã®çµ¶å¯Ÿå€ |
AVE_SãAVE_U | 笊å·ä»ãããã³ç¬Šå·ãªãã®å¹³å |
AVER_SãAVER_U | åæšäºå
¥ã«ãã笊å·ä»ãããã³ç¬Šå·ãªãã®å¹³å |
DOTP_SãDOTP_U | 眲åä»ãããã³çœ²åãªãã®ãããç© |
DPADD_SãDPADD_U | 眲åä»ãããã³çœ²åãªãã®ãããç©è¿œå |
DPSUB_SãDPSUB_U | 笊å·ä»ãããã³ç¬Šå·ãªãã®ãããç©æžç® |
DIV_SãDIV_U | å²ã |
ãã㎠| ä¹ç®å ç® |
MAX_AãMIN_A | 絶察å€ã®æ倧å€ãšæå°å€ |
MAX_SãMAXI_SãMAX_UãMAXI_U | 笊å·ä»ãããã³ç¬Šå·ãªãã®æå€§å€ |
MIN_SãMINI_SãMIN_UãMINI_U | 笊å·ä»ãããã³ç¬Šå·ãªãã®æå€§å€ |
Msubv | ä¹ç®æžç® |
ãã«ã | æãã |
MOD_SãMOD_U | 笊å·ä»ãããã³ç¬Šå·ãªãã®å°äœïŒã¢ãžã¥ãïŒ |
SAT_SãSAT_U | 眲åä»ãããã³çœ²åãªãã®ãµãã¥ã¬ãŒã |
SUBS_SãSUBS_U | 笊å·ä»ãããã³ç¬Šå·ãªãã®é£œåæžç® |
HSUB_SãHSUB_U | 笊å·ä»ãããã³ç¬Šå·ãªãã®æ°Žå¹³æžç® |
SUBSUU_S | 笊å·ä»ã飜å笊å·ãªãæžç® |
SUBSUS_U | 笊å·ãªãããã®ç¬Šå·ãªã飜å笊å·ä»ãæžç® |
SUBVãSUBVI | åŒã |
ãããæŒç®ããŒã¢ãã㯠| åœä»€ã®èª¬æ |
---|
ANDãANDI | è«çç |
BCLRãBCLRI | ãããã¯ãªã¢ |
BINSLãBINSLIãBINSRãBINSRI | å·Šå³ã®ãããæ¿å
¥ |
BMNZãBMNZI | ãŒãã§ãªãå Žåã®ããã移å |
BMZãBMZI | ãŒãã®å Žåã®ããã移å |
BNEGãBNEGI | ãããåŠå® |
BSELãBSELI | ãããéžæ |
BSETãBSETI | ãããã»ãã |
NLOCãªãŒãã£ã³ã° | 1ãããã«ãŠã³ã |
NLZCãªãŒãã£ã³ã° | ãŒããããã«ãŠã³ã |
NORãNORI | è«çåŠå®ãŸã㯠|
PCNT | 人å£ïŒãããã1ã«èšå®ïŒã«ãŠã³ã |
ãŸãã¯ãORI | è«ççãŸã㯠|
SLLãSLLI | å·Šã«ã·ãã |
SRAãSRAI | å³ã·ããç®è¡ |
SRARãSRARI | äžžãå³ã·ããæŒç® |
SRLãSRLI | å³ã·ããè«ç |
SRLRãSRLRI | äžžãã·ããå³è«ç |
XORãXORI | è«çæä»çOR |
æµ®åå°æ°ç¹ç®è¡æŒç®ããŒã¢ãã㯠| åœä»€ã®èª¬æ |
---|
ãã¡ãã | æµ®åå°æ°ç¹ã®è¿œå |
Fdiv | æµ®åå°æ°ç¹ |
FEXP2 | æµ®åå°æ°ç¹ããŒã¹2ã®ã¹ãä¹ |
FLOG2 | æµ®åå°æ°ç¹ããŒã¹2å¯Ÿæ° |
FMADDãFMSUB | æµ®åå°æ°ç¹èåä¹ç®å ç®ããã³ä¹ç®æžç® |
FMAXãFMIN | æµ®åå°æ°ç¹ã®æ倧å€ãšæå°å€ |
FMAX_AãFMIN_A | 絶察å€ã®æµ®åå°æ°ç¹ã®æ倧å€ãšæå°å€ |
Fmul | æµ®åå°æ°ç¹ä¹ç® |
Frcp | è¿äŒŒæµ®åå°æ°ç¹éæ° |
ããªã³ã | æŽæ°ãžã®æµ®åå°æ°ç¹ã®äžžã |
FRSQRT | å¹³æ¹æ ¹ã®è¿äŒŒæµ®åå°æ°ç¹éæ° |
FSQRT | æµ®åå°æ°ç¹å¹³æ¹æ ¹ |
FSUB | æµ®åå°æ°ç¹æžç® |
éç®è¡æµ®åå°æ°ç¹æŒç®ããŒã¢ãã㯠| åœä»€ã®èª¬æ |
---|
FCLASS | æµ®åå°æ°ç¹ã¯ã©ã¹ãã¹ã¯ |
æµ®åå°æ°ç¹æ¯èŒæŒç®ããŒã¢ãã㯠| åœä»€ã®èª¬æ |
---|
FCAF | æµ®åå°æ°ç¹ã®éããªæ¯èŒã¯åžžã«åœ |
FCUN | æµ®åå°æ°ç¹Quiet Compare Unordered |
FCOR | æµ®åå°æ°ç¹ã¯ã¯ã€ãšããæ¯èŒé åºä»ã |
Fceq | æµ®åå°æ°ç¹ã®éããªæ¯èŒãçãã |
FCUNE | æµ®åå°æ°ç¹ã®éããªæ¯èŒãé åºãªããŸãã¯çãããªã |
FCUEQ | æµ®åå°æ°ç¹Quiet Compare UnorderedãŸãã¯Equal |
FCNE | çãããªãæµ®åå°æ°ç¹ã®éããªæ¯èŒ |
FCLT | æµ®åå°æ°ç¹ã®éããªæ¯èŒ |
FCULT | æµ®åå°æ°ç¹ã®éããªæ¯èŒé äžåãŸãã¯ããå°ãã |
FCLE | æµ®åå°æ°ç¹ã®éããªæ¯èŒãããå°ãããçãã |
FCULE | æµ®åå°æ°ç¹ã®éããªæ¯èŒãé åºãªãããŸãã¯ä»¥äž |
FSAF | æµ®åå°æ°ç¹ä¿¡å·æ¯èŒã¯åžžã«åœ |
FSUN | æµ®åå°æ°ç¹ä¿¡å·æ¹åŒæ¯èŒé äžå |
FSOR | æµ®åå°æ°ç¹ã·ã°ããªã³ã°æ¯èŒé åºä»ã |
FSEQ | æµ®åå°æ°ç¹ä¿¡å·ã®æ¯èŒãçãã |
FSUNE | æµ®åå°æ°ç¹ä¿¡å·ã®æ¯èŒé åºãªããŸãã¯çãããªã |
FSUEQ | æµ®åå°æ°ç¹ã·ã°ããªã³ã°ã®æ¯èŒé åºãªããŸãã¯çãã |
FSNE | æµ®åå°æ°ç¹ä¿¡å·ã®æ¯èŒãçãããªã |
FSLT | æµ®åå°æ°ç¹ã·ã°ããªã³ã°ã®æ¯èŒ |
FSULT | æµ®åå°æ°ç¹ä¿¡å·ã®æ¯èŒé åºãªããŸãã¯æªæº |
FSLE | æµ®åå°æ°ç¹ä¿¡å·ã®æ¯èŒãããå°ãããçãã |
FSULE | æµ®åå°æ°ç¹ã·ã°ããªã³ã°ã§é åºä»ããããŠããªãããçãããå°ããããæ¯èŒ |
æµ®åå°æ°ç¹å€ææäœããŒã¢ãã㯠| åœä»€ã®èª¬æ |
---|
ãã§ã¯ã¹ã | æµ®åå°æ°ç¹ããŠã³ã³ã³ããŒã亀æãã©ãŒããã |
FEXUPLãFEXUPR | å·Šååããã³å³ååã®æµ®åå°æ°ç¹ã¢ããã³ã³ããŒã亀æãã©ãŒããã |
FFINT_SãFFINT_U | 笊å·ä»ãããã³ç¬Šå·ãªãæŽæ°ããã®æµ®åå°æ°ç¹å€æ |
FFQLãFFQR | åºå®å°æ°ç¹ããã®å·Šååããã³å³ååã®æµ®åå°æ°ç¹å€æ |
FTINT_SãFTINT_U | æµ®åå°æ°ç¹ã®äžžããšç¬Šå·ä»ãããã³ç¬Šå·ãªãæŽæ°ãžã®å€æ |
FTRUNC_SãFTRUNC_U | æµ®åå°æ°ç¹ã®åãæšãŠããã³ç¬Šå·ä»ãããã³ç¬Šå·ãªãæŽæ°ãžã®å€æ |
FTQ | æµ®åå°æ°ç¹ã®äžžããšåºå®å°æ°ç¹ãžã®å€æ |
åºå®å°æ°ç¹æŒç®ããŒã¢ãã㯠| åœä»€ã®èª¬æ |
---|
MADD_QãMADDR_Q | åºå®å°æ°ç¹ä¹ç®ããã³å ç®ïŒäžžããªãããã³äžžãããïŒ |
MSUB_QãMSUBR_Q | åºå®å°æ°ç¹ã®ä¹ç®ãšæžç®ãäžžããªãããã³äžžããã |
MUL_QãMULR_Q | äžžããªãããã³äžžãããã®åºå®å°æ°ç¹ä¹ç® |
åå²æäœããŒã¢ãã㯠| åœä»€ã®èª¬æ |
---|
Bnz | ãŒãã§ãªãå Žååå² |
Bz | ãŒãã®å Žååå² |
CEQãCEQI | çãããšæ¯èŒ |
CLE_SãCLEI_SãCLE_UãCLEI_U | 笊å·ãªããšç¬Šå·ãªãã®æ¯èŒ |
CLT_SãCLTI_SãCLT_UãCLTI_U | æªçœ²åãšæªçœ²åã®æ¯èŒ |
ãã¯ã¿ãŒã®ããŒãããã³ã¢ã³ããŒãæäœããŒã¢ãã㯠| åœä»€ã®èª¬æ |
---|
CFCMSAãCTCMSA | MSAå¶åŸ¡ã¬ãžã¹ã¿ããã®ã³ããŒããã³MSAå¶åŸ¡ã¬ãžã¹ã¿ãžã®ã³ã㌠|
LD | è·éãã¯ãã« |
LDI | ããã«ããŒã |
移å | ãã¯ãã«ãããã¯ãã«ãžã®ç§»å |
ã¹ãã©ãããã¹ãã©ã㣠| ãã¯ã¿ãŒèŠçŽ ã®è€è£œ |
å¡ãã€ã¶ã | GPRããã®ãã¯ãã« |
æ¿å
¥ãæ¿å
¥ | GPRãšãã¯ã¿ãŒèŠçŽ 0ããã¯ã¿ãŒèŠçŽ ã«æ¿å
¥ãã |
COPY_SãCOPY_U | ãšã¬ã¡ã³ããGPR眲åããã³æªçœ²åã«ã³ããŒããŸã |
ST | åºèãã¯ãã« |
ãã¯ãã«é åæŒç®ããŒã¢ãã㯠| åœä»€ã®èª¬æ |
---|
ILVEVãILVOD | ã€ã³ã¿ãŒãªãŒãå¶æ°ãå¥æ° |
ILVLãILVR | å·Šãå³ãã€ã³ã¿ãŒãªãŒã |
PCKEVãPCKOD | å¶æ°ããã³å¥æ°èŠçŽ ããã㯠|
SHF | ã·ã£ããã«ãèšå®ãã |
SLDãSLDI | èŠçŽ ã¹ã©ã€ã |
VSHF | ãã¯ãã«ã·ã£ããã« |
ãã®ä»ã®æäœããŒã¢ãã㯠| åœä»€ã®èª¬æ |
---|
LSA | å·Šã·ããå ç®ãŸãã¯ããŒã/ã¹ãã¢ã®ã¢ãã¬ã¹èšç® |
- ã»ãšãã©ã®ã³ãã³ãã¯ããã¯ã¿ãŒèŠçŽ ã®ãµã€ãºãšåŠçãããããŒã¿ã®ã¿ã€ããäºãã«ç°ãªãè€æ°ã®ããŒãžã§ã³ã§äœ¿çšã§ããŸãã ãããã£ãŠã环ç®ã«ããä¹ç®ã®äžè¬çãªæäœã¯ãFMADD-æµ®åå°æ°ç¹æ°çšãMADD_Q-åºå®å°æ°ç¹æ°çšïŒé£œåããïŒãMADDR_Q-åºå®å°æ°ç¹æ°çšïŒé£œåããã³äžžãä»ãïŒãMADDV-æŽæ°çšãšããŠå®è£
ãããŸãã ã åæã«ãäŸãã°ãMADDVã¯4ã€ã®ããŒãžã§ã³ã§å©çšå¯èœã§ãïŒMADDV.B-ãã€ãåŠçèŠçŽ ïŒx8ïŒã®å ŽåãMADDV.H-åãã¯ãã«èŠçŽ ãããŒãã¯ãŒãïŒx16ïŒã®å ŽåãMADDV.W-ã¯ãŒãïŒx32ïŒããã³MADDV D-ããã«ã¯ãŒãïŒx64ïŒ
ããŒã ã®æ£åŒãªèª¬æ ã³ã³ãã€ã©ã¬ãã«ã®ãµããŒã
MIPS SIMDã¯gccã³ã³ãã€ã©ãŒã«ãã£ãŠãµããŒããããŠããŸããããã®ãµããŒãã«ã¯ç¬èªã®ç¹åŸŽããããŸãã
- ããŸããŸãªæ¬¡å
ã®ãã¯ãã«èŠçŽ [ L16 ]ã«åå¥ã®ããŒã¿åãå°å
¥ãããŸããã
- ã¬ãžã¹ã¿ã䜿çšããçŽæ¥äœæ¥ã®å¿
èŠããªããªããŸããïŒäœæ¥ã¯å¯Ÿå¿ããåã®å€æ°ã®ã¬ãã«ã§è¡ãããŸãïŒã
- äžèšã®ãã¹ãŠã®æäœã«ã€ããŠãé«ã¬ãã«ã®ãšã€ãªã¢ã¹ãå°å
¥ãããŠããŸã[ L17 ]ã
- gccã®ããã¥ã¡ã³ãã«ãããšãã³ã³ãã€ã©ã¯MIPS SIMDã®äœ¿çšã«é¢ããŠç¬ç«ãã決å®ãè¡ããŸããããããã¯Imagination Technologies Webãµã€ã[ D3 ]ã§å
¬éãããMIPS SIMDã¢ããªã±ãŒã·ã§ã³ã®ååã«åæãããäŸã§ã確èªãããŠããŸãã ãããã£ãŠã倧ãŸããªé¡äŒŒæ§ãåŒãåºããšãMIPS SIMDã§ã®äœæ¥ã¯ãé«åºŠãªããã°ã©ãã³ã°ãããã¢ã»ã³ãã©ãŒã®æ¿å
¥ã®äœæã«è¿ããªããŸãã æé©åã決å®ããéã«èæ
®ãã¹ãäºé
ã
æé©ååã®ã³ãŒã #define ROUND_POWER_OF_TWO(value, n) (((value) + (1 << ((n) - 1))) >> (n)) static inline unsigned char clip_pixel(int i32Val) { return ((i32Val) > 255) ? 255u : ((i32Val) < 0) ? 0u : (i32Val); } void vert_filter_8taps_16width_c(unsigned char *pSrc, // SOURCE POINTER int SrcStride, // SOURCE BUFFER PITCH unsigned char *pDst, // DEST POINTER int DstStride, // DEST BUFFER PITCH char *pFilter, // POINTER TO FILTER BANK int Height) // HEIGHT OF THE BLOCK { unsigned int Row, Col; int FiltSum; short Src0, Src1, Src2, Src3, Src4, Src5, Src6, Src7; pSrc -= (8 / 2 - 1) * SrcStride; // MOVE INPUT SRC POINTER TO APPROPRIATE POSITION // LOOP FOR NUMBER OF COLUMNS-16 for (Col = 0; Col < 16; ++Col) { Src0 = pSrc[0 * SrcStride]; Src1 = pSrc[1 * SrcStride]; Src2 = pSrc[2 * SrcStride]; Src3 = pSrc[3 * SrcStride]; Src4 = pSrc[4 * SrcStride]; Src5 = pSrc[5 * SrcStride]; Src6 = pSrc[6 * SrcStride]; // LOOP FOR NUMBER OF ROWS for (Row = 0; Row < Height; Row++) { Src7 = pSrc[(7 + Row) * SrcStride]; FiltSum = 0; // ACCUMULATED FILTER SUM += PIXEL * FILTER COEFF FiltSum += (Src0 * pi8Filter[0]); FiltSum += (Src1 * pi8Filter[1]); FiltSum += (Src2 * pi8Filter[2]); FiltSum += (Src3 * pi8Filter[3]); FiltSum += (Src4 * pi8Filter[4]); FiltSum += (Src5 * pi8Filter[5]); FiltSum += (Src6 * pi8Filter[6]); FiltSum += (Src7 * pi8Filter[7]); FiltSum = ROUND_POWER_OF_TWO(FiltSum, 7); // ROUNDING pDst[Row * DstStride] = clip_pixel(FiltSum);// CLIP RESULT IN 0-255(UNSIGNED CHAR) // PREPARING FOR NEXT CONVOLUTION- SLIDING WINDOW Src0 = Src1; Src1 = Src2; Src2 = Src3; Src3 = Src4; Src4 = Src5; Src5 = Src6; Src6 = Src7; } pSrc += 1; pDst += 1; } }
MIPS SIMDã䜿çšããæé©ååŸã®ã³ãŒã æ§èœè©äŸ¡
åœåãMIPS SIMDã䜿çšããå Žåã®ããã©ãŒãã³ã¹ã®åäžãè©äŸ¡ããããã®ç°¡åãªã¢ããªã±ãŒã·ã§ã³ïŒåæãã¹ãïŒãäœæããããšãèããŠããŸããã ãããããã¹ãŠã®é
åã«ããããããããã®ãªãã·ã§ã³ã¯ãŠãŒã¶ãŒã®å®éã®ã¿ã¹ã¯ããéé¢ãããŠãããããææšã§ã¯ãããŸããã 幞ããªããšã«ãã€ããžããŒã·ã§ã³ãã¯ãããžãŒãºãšMIPSã®åŸæ¥å¡ã¯ããªãŒãã£ãªãšãããªãå€æããããã«åºã䜿çšãããŠãããªãŒãã³ãœãŒã¹ã¢ããªã±ãŒã·ã§ã³[ L19 ] ffmpeg [ L18 ]ã«å€å€§ãªè²¢ç®ãããŸããã 圌ãã¯ãä»ã®èª°ãç¥ããªãããã«ãåé¡ã®ãã¯ãããžãŒãé©åã«äœ¿çšããæ¹æ³ãç¥ã£ãŠãããšä¿¡ããŠããŸããã€ãŸãããã®ã³ãŒãã¯å¯èœãªéãå¹ççã§ãªããã°ãªããŸããã
ãããã£ãŠãffmpegãMIPS SIMDãµããŒããããšãªãã®2ã€ã®ããŒãžã§ã³ã§ã³ã³ãã€ã«ãããšãåãå
¥åããŒã¿ã®äœæ¥é床ãæ¯èŒãããã®çµæã«åºã¥ããŠãã¯ãã«ã³ã³ãã¥ãŒãã£ã³ã°ã®æå¹æ§ã«ã€ããŠçµè«ãåºãããšãã§ããŸãã
Ffmpegãã«ã
Linuxãå®è¡ããŠããx86ãã·ã³ã§å®è¡ãããŸãã éçºããŒã«ã¯ãã¯ãã¹ã³ã³ãã€ã«ã¢ãŒãã§Imagination Technologies [ L20 ]ãµã€ããã䜿çšãããŸãã ãã¹ãã¯ãå·çæç¹ã®ææ°ã®å®å®çãªãªãŒã¹-ffmpeg 3.3 [ L19 ]ã§å®è¡ãããŸãã
MIPS SIMD察å¿ããŒãžã§ã³ã®Ffmpegèšå®ïŒ
./configure --enable-cross-compile --prefix=../ffmpeg-msa --cross-prefix=/home/stas/mipsfpga/toolchain/mips-mti-linux-gnu/2016.05-03/bin/mips-mti-linux-gnu- --arch=mips --cpu=p5600 --target-os=linux --extra-cflags="-EL -static" --extra-ldflags="-EL -static" --disable-iconv
ãŸããMIPS SIMDãµããŒããç¡å¹ã«ããå ŽåïŒ
./configure --enable-cross-compile --prefix=../ffmpeg-soft --cross-prefix=/home/stas/mipsfpga/toolchain/mips-mti-linux-gnu/2016.05-03/bin/mips-mti-linux-gnu- --arch=mips --cpu=p5600 --target-os=linux --extra-cflags="-EL -static" --extra-ldflags="-EL -static" --disable-iconv --disable-msa
æ§æèšå®ã®èª¬æãã©ã¡ãŒã¿ | 説æ |
---|
--enable-cross-compile | ã¢ã»ã³ããªã¯ãåªããã¿ãŒã²ããã¢ãŒããã¯ãã£ãåãããã·ã³ã§å®è¡ãããŸãã |
--prefix = .. / ffmpeg-msa | make installã³ãã³ãã®åŸã«ãã¡ã€ã«ãé
眮ããããã£ã¬ã¯ã㪠|
--cross-prefix = .. / mips-mti-linux-gnu- | ããŒã«ãã§ãŒã³ãžã®ãã¹ |
--arch = mips | ã¿ãŒã²ããã¢ãŒããã¯ãã£-MIPS |
--cpu = p5600 | ã¿ãŒã²ããããã»ããµã³ã¢-p5600 |
--target-os = linux | ã¿ãŒã²ããOS-Linux |
--extra-cflags = "-EL -static" | ã¿ãŒã²ããã·ã¹ãã ã¯ãªãã«ãšã³ãã£ã¢ã³ã§ããéçãã€ã³ãã£ã³ã°ã䜿çšããŸã |
--extra-ldflags = "-EL -static" | åæ§ã« |
--disable-iconv | ããã¹ããšã³ã³ãŒãã£ã³ã°ã«é¢é£ããæ©èœãç¡å¹ã«ããŸã |
--disable-msa | MIPS SIMDã䜿çšããªãã§ãã ãã |
ãããã®æé ãç¹°ãè¿ãå Žåãlibavcodec \ mips \ hevcpred_msa.cãã¡ã€ã«ã«è¿œå ããå¿
èŠãããä¿®æ£ãè¡ãããã«ãMIPS SIMDãµããŒãä»ãã®ffmpeg 3.3ãã«ãããã€ããŒãšã©ãŒã§å€±æããããšã«æ³šæããŠãã ããã
#include "libavcodec/hevcdec.h"
ãã¹ãäž
ãã€ã«ã«T1ããã»ããµã§å®è¡ãããŸãã
x264 [ L21 ]ããã³x265 [ L22 ]ã䜿çšããŠãšã³ã³ãŒãããã2ã€ã®ãããªãå
¥åãšããŠæ©èœããŸãã ãã¹ãã¿ã¹ã¯ã¯ãã¹ã¯ãªãŒã³ã·ã§ããä»ãã®ãããªãå®æçã«ãã³ãŒãããããšã§ãã
./ffmpeg-mips/ffmpeg-msa/bin/ffmpeg -i ./The\ Simpsons\ Movie\ -\ Trailer_x264.mp4 -vf fps=1/10 ./out_img/ffmpeg-msa_x264_%d.jpg -report -benchmark ./ffmpeg-mips/ffmpeg-msa/bin/ffmpeg -i ./Tears_400_x265.mp4 -vf fps=1 ./out_img/ffmpeg-msa_x265_%d.jpg -report -benchmark ./ffmpeg-mips/ffmpeg-soft/bin/ffmpeg -i ./The\ Simpsons\ Movie\ -\ Trailer_x264.mp4 -vf fps=1/10 ./out_img/ffmpeg-soft_x264_%d.jpg -report -benchmark ./ffmpeg-mips/ffmpeg-soft/bin/ffmpeg -i ./Tears_400_x265.mp4 -vf fps=1 ./out_img/ffmpeg-soft_x265_%d.jpg -report -benchmark
èµ·åãªãã·ã§ã³ã®èª¬æãã©ã¡ãŒã¿ | 説æ |
---|
-i ./Tears_400_x265.mp4 | åŠçãããã¡ã€ã« |
-vf fps = 1 | ã¹ã¯ãªãŒã³ã·ã§ãããæ®ãæéïŒé »åºŠïŒïŒçãã¯ãªããã®å Žåã¯1ç§ãé·ãã¯ãªããã®å Žåã¯10ç§ïŒ |
./out_img/ffmpeg-soft x264 ïŒ
d.jpg | åºåãã¡ã€ã«åãã³ãã¬ãŒã |
-ã¬ããŒã | äœæ¥çµæã«é¢ããã¬ããŒããçæãã |
-ãã³ãããŒã¯ | ããã©ãŒãã³ã¹ããŒã¿ãå«ãã |
Ffmpegã®çµæ
ã¹ã¯ãªãã | ç¶ç¶æéïŒç§ïŒ |
---|
x264 MIPS SIMD | 113 |
x265 MIPS SIMD | 22 |
x264 MIPS SIMD | 164 |
x265 MIPS SIMD | 52 |
, MIPS SIMD 1.5 â 2.4 .
ffmpeg github [ L23 ].
x264 MIPS SIMD (, ) ffmpeg started on 2010-10-18 at 00:30:26 Report written to "ffmpeg-20101018-003026.log" Command line: ./ffmpeg-mips/ffmpeg-msa/bin/ffmpeg -i "./The Simpsons Movie - Trailer_x264.mp4" -vf "fps=1/10" "./out_img/ffmpeg-msa_x264_%d.jpg" -report -benchmark ffmpeg version 3.3 Copyright (c) 2000-2017 the FFmpeg developers built with gcc 4.9.2 (Codescape GNU Tools 2016.05-03 for MIPS MTI Linux) configuration: --enable-cross-compile --prefix=../ffmpeg-msa --cross-prefix=/home/stas/mipsfpga/toolchain/mips-mti-linux-gnu/2016.05-03/bin/mips-mti-linux-gnu- --arch=mips --cpu=p5600 --target-os=linux --extra-cflags='-EL -static' --extra-ldflags='-EL -static' --disable-iconv libavutil 55. 58.100 / 55. 58.100 libavcodec 57. 89.100 / 57. 89.100 libavformat 57. 71.100 / 57. 71.100 libavdevice 57. 6.100 / 57. 6.100 libavfilter 6. 82.100 / 6. 82.100 libswscale 4. 6.100 / 4. 6.100 libswresample 2. 7.100 / 2. 7.100 Splitting the commandline. Reading option '-i' ... matched as input url with argument './The Simpsons Movie - Trailer_x264.mp4'. Reading option '-vf' ... matched as option 'vf' (set video filters) with argument 'fps=1/10'. Reading option './out_img/ffmpeg-msa_x264_%d.jpg' ... matched as output url. Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'. Reading option '-benchmark' ... matched as option 'benchmark' (add timings for benchmarking) with argument '1'. Finished splitting the commandline. Parsing a group of options: global . Applying option report (generate a report) with argument 1. Applying option benchmark (add timings for benchmarking) with argument 1. Successfully parsed a group of options. Parsing a group of options: input url ./The Simpsons Movie - Trailer_x264.mp4. Successfully parsed a group of options. Opening an input file: ./The Simpsons Movie - Trailer_x264.mp4. [file @ 0x1fce0e0] Setting default whitelist 'file,crypto' [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] ISO: File Type Major Brand: isom [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] Unknown dref type 0x206c7275 size 12 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] Unknown dref type 0x206c7275 size 12 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] Before avformat_find_stream_info() pos: 73516232 bytes read:65587 seeks:1 nb_streams:2 [h264 @ 0x1fcecb0] nal_unit_type: 7, nal_ref_idc: 3 [h264 @ 0x1fcecb0] nal_unit_type: 8, nal_ref_idc: 3 [h264 @ 0x1fcecb0] nal_unit_type: 6, nal_ref_idc: 0 [h264 @ 0x1fcecb0] nal_unit_type: 5, nal_ref_idc: 3 [h264 @ 0x1fcecb0] user data:"x264 - core 54 svn-620M - H.264/MPEG-4 AVC codec - Copyleft 2005 - http://www.videolan.org/x264.html - options: cabac=1 ref=5 deblock=1:0:0 analyse=0x1:0x131 me=umh subme=6 brdo=1 mixed_ref=0 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 chroma_qp_offset=0 threads=1 nr=0 decimate=1 mbaff=0 bframes=1 b_pyramid=0 b_adapt=1 b_bias=0 direct=3 wpredb=0 bime=0 keyint=250 keyint_min=25 scenecut=40 rc=2pass bitrate=4214 ratetol=1.0 rceq='blurCplx^(1-qComp)' qcomp=0.60 qpmin=10 qpmax=51 qpstep=4 cplxblur=20.0 qblur=0.5 ip_ratio=1.40 pb_ratio=1.30" [h264 @ 0x1fcecb0] Reinit context to 1280x544, pix_fmt: yuv420p [h264 @ 0x1fcecb0] no picture [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] All info found [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] After avformat_find_stream_info() pos: 94845 bytes read:141348 seeks:2 frames:13 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from './The Simpsons Movie - Trailer_x264.mp4': Metadata: major_brand : isom minor_version : 1 compatible_brands: isomavc1 creation_time : 2007-02-19T05:03:04.000000Z Duration: 00:02:17.30, start: 0.000000, bitrate: 4283 kb/s Stream #0:0(und), 12, 1/24000: Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x544, 4221 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default) Metadata: creation_time : 2007-02-19T05:03:04.000000Z handler_name : GPAC ISO Video Handler Stream #0:1(und), 1, 1/48000: Audio: aac (HE-AAC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 64 kb/s (default) Metadata: creation_time : 2007-02-19T05:03:08.000000Z handler_name : GPAC ISO Audio Handler Successfully opened the file. Parsing a group of options: output url ./out_img/ffmpeg-msa_x264_%d.jpg. Applying option vf (set video filters) with argument fps=1/10. Successfully parsed a group of options. Opening an output file: ./out_img/ffmpeg-msa_x264_%d.jpg. Successfully opened the file. detected 2 logical cores [h264 @ 0x20191e0] nal_unit_type: 7, nal_ref_idc: 3 [h264 @ 0x20191e0] nal_unit_type: 8, nal_ref_idc: 3 Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> mjpeg (native)) Press [q] to stop, [?] for help cur_dts is invalid (this is harmless if it occurs once at the start per stream) cur_dts is invalid (this is harmless if it occurs once at the start per stream) [h264 @ 0x20191e0] nal_unit_type: 6, nal_ref_idc: 0 [h264 @ 0x20191e0] nal_unit_type: 5, nal_ref_idc: 3 [h264 @ 0x20191e0] user data:"x264 - core 54 svn-620M - H.264/MPEG-4 AVC codec - Copyleft 2005 - http://www.videolan.org/x264.html - options: cabac=1 ref=5 deblock=1:0:0 analyse=0x1:0x131 me=umh subme=6 brdo=1 mixed_ref=0 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 chroma_qp_offset=0 threads=1 nr=0 decimate=1 mbaff=0 bframes=1 b_pyramid=0 b_adapt=1 b_bias=0 direct=3 wpredb=0 bime=0 keyint=250 keyint_min=25 scenecut=40 rc=2pass bitrate=4214 ratetol=1.0 rceq='blurCplx^(1-qComp)' qcomp=0.60 qpmin=10 qpmax=51 qpstep=4 cplxblur=20.0 qblur=0.5 ip_ratio=1.40 pb_ratio=1.30" [h264 @ 0x20191e0] Reinit context to 1280x544, pix_fmt: yuv420p [h264 @ 0x20191e0] no picture cur_dts is invalid (this is harmless if it occurs once at the start per stream) [h264 @ 0x2026050] nal_unit_type: 1, nal_ref_idc: 2 [h264 @ 0x2060f00] nal_unit_type: 1, nal_ref_idc: 0 cur_dts is invalid (this is harmless if it occurs once at the start per stream) [h264 @ 0x20191e0] nal_unit_type: 1, nal_ref_idc: 2 [Parsed_fps_0 @ 0x202bf50] Setting 'fps' to value '1/10' [Parsed_fps_0 @ 0x202bf50] fps=1/10 [graph 0 input from stream 0:0 @ 0x202c6f0] Setting 'video_size' to value '1280x544' [graph 0 input from stream 0:0 @ 0x202c6f0] Setting 'pix_fmt' to value '0' [graph 0 input from stream 0:0 @ 0x202c6f0] Setting 'time_base' to value '1/24000' [graph 0 input from stream 0:0 @ 0x202c6f0] Setting 'pixel_aspect' to value '0/1' [graph 0 input from stream 0:0 @ 0x202c6f0] Setting 'sws_param' to value 'flags=2' [graph 0 input from stream 0:0 @ 0x202c6f0] Setting 'frame_rate' to value '24000/1001' [graph 0 input from stream 0:0 @ 0x202c6f0] w:1280 h:544 pixfmt:yuv420p tb:1/24000 fr:24000/1001 sar:0/1 sws_param:flags=2 [format @ 0x202c030] compat: called with args=[yuvj420p|yuvj422p|yuvj444p] [format @ 0x202c030] Setting 'pix_fmts' to value 'yuvj420p|yuvj422p|yuvj444p' [auto_scaler_0 @ 0x202c660] Setting 'flags' to value 'bicubic' [auto_scaler_0 @ 0x202c660] w:iw h:ih flags:'bicubic' interl:0 [format @ 0x202c030] auto-inserting filter 'auto_scaler_0' between the filter 'Parsed_fps_0' and the filter 'format' [AVFilterGraph @ 0x202bb80] query_formats: 4 queried, 2 merged, 1 already done, 0 delayed [auto_scaler_0 @ 0x202c660] picking yuvj420p out of 3 ref:yuv420p alpha:0 [swscaler @ 0x202cf00] deprecated pixel format used, make sure you did set range correctly [auto_scaler_0 @ 0x202c660] w:1280 h:544 fmt:yuv420p sar:0/1 -> w:1280 h:544 fmt:yuvj420p sar:0/1 flags:0x4 [mjpeg @ 0x1ff5f90] Forcing thread count to 1 for MJPEG encoding, use -thread_type slice or a constant quantizer if you want to use multiple cpu cores [mjpeg @ 0x1ff5f90] intra_quant_bias = 96 inter_quant_bias = 0 Output #0, image2, to './out_img/ffmpeg-msa_x264_%d.jpg': Metadata: major_brand : isom minor_version : 1 compatible_brands: isomavc1 encoder : Lavf57.71.100 Stream #0:0(und), 0, 10/1: Video: mjpeg, yuvj420p(pc), 1280x544, q=2-31, 200 kb/s, 0.10 fps, 0.10 tbn, 0.10 tbc (default) Metadata: creation_time : 2007-02-19T05:03:04.000000Z handler_name : GPAC ISO Video Handler encoder : Lavc57.89.100 mjpeg Side data: cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1 cur_dts is invalid (this is harmless if it occurs once at the start per stream) [Parsed_fps_0 @ 0x202bf50] Dropping 1 frame(s). cur_dts is invalid (this is harmless if it occurs once at the start per stream) ... [h264 @ 0x2060f00] nal_unit_type: 1, nal_ref_idc: 2 [Parsed_fps_0 @ 0x202bf50] Dropping 1 frame(s). [Parsed_fps_0 @ 0x202bf50] Dropping 1 frame(s). [Parsed_fps_0 @ 0x202bf50] Dropping 1 frame(s). [file @ 0x209dc40] Setting default whitelist 'file,crypto' [AVIOContext @ 0x2189ab0] Statistics: 0 seeks, 1 writeouts frame= 15 fps=0.2 q=1.6 size=N/A time=00:02:30.00 bitrate=N/A speed=2.03x No more output streams to write to, finishing. frame= 15 fps=0.2 q=1.6 Lsize=N/A time=00:02:30.00 bitrate=N/A speed=2.03x video:1382kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown Input file #0 (./The Simpsons Movie - Trailer_x264.mp4): Input stream #0:0 (video): 3288 packets read (72364468 bytes); 3288 frames decoded; Input stream #0:1 (audio): 1 packets read (134 bytes); Total: 3289 packets (72364602 bytes) demuxed Output file #0 (./out_img/ffmpeg-msa_x264_%d.jpg): Output stream #0:0 (video): 15 frames encoded; 15 packets muxed (1414925 bytes); Total: 15 packets (1414925 bytes) muxed bench: utime=113.070s 3288 frames successfully decoded, 0 decoding errors bench: maxrss=39264kB [Parsed_fps_0 @ 0x202bf50] 3288 frames in, 15 frames out; 3273 frames dropped, 0 frames duplicated. [AVIOContext @ 0x1fd6230] Statistics: 73517562 bytes read, 5 seeks
x265 MIPS SIMD (, ) ffmpeg started on 2010-10-18 at 00:27:58 Report written to "ffmpeg-20101018-002758.log" Command line: ./ffmpeg-mips/ffmpeg-msa/bin/ffmpeg -i ./Tears_400_x265.mp4 -vf "fps=1" "./out_img/ffmpeg-msa_x265_%d.jpg" -report -benchmark ffmpeg version 3.3 Copyright (c) 2000-2017 the FFmpeg developers built with gcc 4.9.2 (Codescape GNU Tools 2016.05-03 for MIPS MTI Linux) configuration: --enable-cross-compile --prefix=../ffmpeg-msa --cross-prefix=/home/stas/mipsfpga/toolchain/mips-mti-linux-gnu/2016.05-03/bin/mips-mti-linux-gnu- --arch=mips --cpu=p5600 --target-os=linux --extra-cflags='-EL -static' --extra-ldflags='-EL -static' --disable-iconv libavutil 55. 58.100 / 55. 58.100 libavcodec 57. 89.100 / 57. 89.100 libavformat 57. 71.100 / 57. 71.100 libavdevice 57. 6.100 / 57. 6.100 libavfilter 6. 82.100 / 6. 82.100 libswscale 4. 6.100 / 4. 6.100 libswresample 2. 7.100 / 2. 7.100 Splitting the commandline. Reading option '-i' ... matched as input url with argument './Tears_400_x265.mp4'. Reading option '-vf' ... matched as option 'vf' (set video filters) with argument 'fps=1'. Reading option './out_img/ffmpeg-msa_x265_%d.jpg' ... matched as output url. Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'. Reading option '-benchmark' ... matched as option 'benchmark' (add timings for benchmarking) with argument '1'. Finished splitting the commandline. Parsing a group of options: global . Applying option report (generate a report) with argument 1. Applying option benchmark (add timings for benchmarking) with argument 1. Successfully parsed a group of options. Parsing a group of options: input url ./Tears_400_x265.mp4. Successfully parsed a group of options. Opening an input file: ./Tears_400_x265.mp4. [file @ 0x1fce0e0] Setting default whitelist 'file,crypto' [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] ISO: File Type Major Brand: iso4 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] Unknown dref type 0x206c7275 size 12 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] Before avformat_find_stream_info() pos: 705972 bytes read:32827 seeks:1 nb_streams:1 [hevc @ 0x1fceca0] nal_unit_type: 32(VPS), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1fceca0] Decoding VPS [hevc @ 0x1fceca0] Main profile bitstream [hevc @ 0x1fceca0] nal_unit_type: 33(SPS), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1fceca0] Decoding SPS [hevc @ 0x1fceca0] Main profile bitstream [hevc @ 0x1fceca0] Decoding VUI [hevc @ 0x1fceca0] nal_unit_type: 34(PPS), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1fceca0] Decoding PPS [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] All info found [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] After avformat_find_stream_info() pos: 20299 bytes read:65595 seeks:2 frames:1 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from './Tears_400_x265.mp4': Metadata: major_brand : iso4 minor_version : 1 compatible_brands: iso4hvc1 creation_time : 2014-08-25T18:10:46.000000Z Duration: 00:00:13.96, start: 0.125000, bitrate: 404 kb/s Stream #0:0(und), 1, 1/24000: Video: hevc (Main) (hvc1 / 0x31637668), yuv420p(tv), 1920x800, 402 kb/s, 24 fps, 24 tbr, 24k tbn, 24 tbc (default) Metadata: creation_time : 2014-08-25T18:10:46.000000Z handler_name : hevc:fps=24@GPAC0.5.1-DEV-rev4807 Successfully opened the file. Parsing a group of options: output url ./out_img/ffmpeg-msa_x265_%d.jpg. Applying option vf (set video filters) with argument fps=1. Successfully parsed a group of options. Opening an output file: ./out_img/ffmpeg-msa_x265_%d.jpg. Successfully opened the file. detected 2 logical cores [hevc @ 0x1fe5a00] nal_unit_type: 32(VPS), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1fe5a00] Decoding VPS [hevc @ 0x1fe5a00] Main profile bitstream [hevc @ 0x1fe5a00] nal_unit_type: 33(SPS), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1fe5a00] Decoding SPS [hevc @ 0x1fe5a00] Main profile bitstream [hevc @ 0x1fe5a00] Decoding VUI [hevc @ 0x1fe5a00] nal_unit_type: 34(PPS), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1fe5a00] Decoding PPS Stream mapping: Stream #0:0 -> #0:0 (hevc (native) -> mjpeg (native)) Press [q] to stop, [?] for help cur_dts is invalid (this is harmless if it occurs once at the start per stream) cur_dts is invalid (this is harmless if it occurs once at the start per stream) [hevc @ 0x1fe5a00] nal_unit_type: 39(SEI_PREFIX), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1fe5a00] nal_unit_type: 39(SEI_PREFIX), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1fe5a00] nal_unit_type: 19(IDR_W_RADL), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1fe5a00] Decoding SEI [hevc @ 0x1fe5a00] Skipped PREFIX SEI 5 [hevc @ 0x1fe5a00] Decoding SEI [hevc @ 0x1fe5a00] Skipped PREFIX SEI 6 cur_dts is invalid (this is harmless if it occurs once at the start per stream) [hevc @ 0x1ffeba0] nal_unit_type: 1(TRAIL_R), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x200c4d0] nal_unit_type: 1(TRAIL_R), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x200c4d0] Output frame with POC 0. [hevc @ 0x1fe5a00] Decoded frame with POC 0. cur_dts is invalid (this is harmless if it occurs once at the start per stream) [hevc @ 0x1fe5a00] nal_unit_type: 0(TRAIL_N), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1fe5a00] Output frame with POC 1. [hevc @ 0x1ffeba0] Decoded frame with POC 5. cur_dts is invalid (this is harmless if it occurs once at the start per stream) [hevc @ 0x1ffeba0] nal_unit_type: 0(TRAIL_N), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1ffeba0] Output frame with POC 2. [hevc @ 0x200c4d0] Decoded frame with POC 3. [Parsed_fps_0 @ 0x201a6c0] Setting 'fps' to value '1' [Parsed_fps_0 @ 0x201a6c0] fps=1/1 [graph 0 input from stream 0:0 @ 0x201abb0] Setting 'video_size' to value '1920x800' [graph 0 input from stream 0:0 @ 0x201abb0] Setting 'pix_fmt' to value '0' [graph 0 input from stream 0:0 @ 0x201abb0] Setting 'time_base' to value '1/24000' [graph 0 input from stream 0:0 @ 0x201abb0] Setting 'pixel_aspect' to value '0/1' [graph 0 input from stream 0:0 @ 0x201abb0] Setting 'sws_param' to value 'flags=2' [graph 0 input from stream 0:0 @ 0x201abb0] Setting 'frame_rate' to value '24/1' [graph 0 input from stream 0:0 @ 0x201abb0] w:1920 h:800 pixfmt:yuv420p tb:1/24000 fr:24/1 sar:0/1 sws_param:flags=2 [format @ 0x201aad0] compat: called with args=[yuvj420p|yuvj422p|yuvj444p] [format @ 0x201aad0] Setting 'pix_fmts' to value 'yuvj420p|yuvj422p|yuvj444p' [auto_scaler_0 @ 0x201a350] Setting 'flags' to value 'bicubic' [auto_scaler_0 @ 0x201a350] w:iw h:ih flags:'bicubic' interl:0 [format @ 0x201aad0] auto-inserting filter 'auto_scaler_0' between the filter 'Parsed_fps_0' and the filter 'format' [AVFilterGraph @ 0x201a2f0] query_formats: 4 queried, 2 merged, 1 already done, 0 delayed [auto_scaler_0 @ 0x201a350] picking yuvj420p out of 3 ref:yuv420p alpha:0 [swscaler @ 0x21d7da0] deprecated pixel format used, make sure you did set range correctly [auto_scaler_0 @ 0x201a350] w:1920 h:800 fmt:yuv420p sar:0/1 -> w:1920 h:800 fmt:yuvj420p sar:0/1 flags:0x4 [mjpeg @ 0x1fe2ba0] Forcing thread count to 1 for MJPEG encoding, use -thread_type slice or a constant quantizer if you want to use multiple cpu cores [mjpeg @ 0x1fe2ba0] intra_quant_bias = 96 inter_quant_bias = 0 Output #0, image2, to './out_img/ffmpeg-msa_x265_%d.jpg': Metadata: major_brand : iso4 minor_version : 1 compatible_brands: iso4hvc1 encoder : Lavf57.71.100 Stream #0:0(und), 0, 1/1: Video: mjpeg, yuvj420p(pc), 1920x800, q=2-31, 200 kb/s, 1 fps, 1 tbn, 1 tbc (default) Metadata: creation_time : 2014-08-25T18:10:46.000000Z handler_name : hevc:fps=24@GPAC0.5.1-DEV-rev4807 encoder : Lavc57.89.100 mjpeg Side data: cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1 cur_dts is invalid (this is harmless if it occurs once at the start per stream) ... No more output streams to write to, finishing. frame= 15 fps=0.7 q=24.8 Lsize=N/A time=00:00:15.00 bitrate=N/A speed=0.668x video:1084kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown Input file #0 (./Tears_400_x265.mp4): Input stream #0:0 (video): 335 packets read (701773 bytes); 335 frames decoded; Total: 335 packets (701773 bytes) demuxed Output file #0 (./out_img/ffmpeg-msa_x265_%d.jpg): Output stream #0:0 (video): 15 frames encoded; 15 packets muxed (1109604 bytes); Total: 15 packets (1109604 bytes) muxed bench: utime=22.300s 335 frames successfully decoded, 0 decoding errors bench: maxrss=72432kB [Parsed_fps_0 @ 0x201a6c0] 335 frames in, 15 frames out; 320 frames dropped, 0 frames duplicated. [AVIOContext @ 0x1fd6220] Statistics: 734659 bytes read, 2 seeks
x264 MIPS SIMD (, ) ffmpeg started on 2010-10-18 at 00:28:31 Report written to "ffmpeg-20101018-002831.log" Command line: ./ffmpeg-mips/ffmpeg-soft/bin/ffmpeg -i "./The Simpsons Movie - Trailer_x264.mp4" -vf "fps=1/10" "./out_img/ffmpeg-soft_x264_%d.jpg" -report -benchmark ffmpeg version 3.3 Copyright (c) 2000-2017 the FFmpeg developers built with gcc 4.9.2 (Codescape GNU Tools 2016.05-03 for MIPS MTI Linux) configuration: --enable-cross-compile --prefix=../ffmpeg-soft --cross-prefix=/home/stas/mipsfpga/toolchain/mips-mti-linux-gnu/2016.05-03/bin/mips-mti-linux-gnu- --arch=mips --cpu=p5600 --target-os=linux --extra-cflags='-EL -static' --extra-ldflags='-EL -static' --disable-iconv --disable-msa libavutil 55. 58.100 / 55. 58.100 libavcodec 57. 89.100 / 57. 89.100 libavformat 57. 71.100 / 57. 71.100 libavdevice 57. 6.100 / 57. 6.100 libavfilter 6. 82.100 / 6. 82.100 libswscale 4. 6.100 / 4. 6.100 libswresample 2. 7.100 / 2. 7.100 Splitting the commandline. Reading option '-i' ... matched as input url with argument './The Simpsons Movie - Trailer_x264.mp4'. Reading option '-vf' ... matched as option 'vf' (set video filters) with argument 'fps=1/10'. Reading option './out_img/ffmpeg-soft_x264_%d.jpg' ... matched as output url. Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'. Reading option '-benchmark' ... matched as option 'benchmark' (add timings for benchmarking) with argument '1'. Finished splitting the commandline. Parsing a group of options: global . Applying option report (generate a report) with argument 1. Applying option benchmark (add timings for benchmarking) with argument 1. Successfully parsed a group of options. Parsing a group of options: input url ./The Simpsons Movie - Trailer_x264.mp4. Successfully parsed a group of options. Opening an input file: ./The Simpsons Movie - Trailer_x264.mp4. [file @ 0x1f4a0e0] Setting default whitelist 'file,crypto' [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] ISO: File Type Major Brand: isom [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] Unknown dref type 0x206c7275 size 12 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] Unknown dref type 0x206c7275 size 12 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] Before avformat_find_stream_info() pos: 73516232 bytes read:65587 seeks:1 nb_streams:2 [h264 @ 0x1f4acb0] nal_unit_type: 7, nal_ref_idc: 3 [h264 @ 0x1f4acb0] nal_unit_type: 8, nal_ref_idc: 3 [h264 @ 0x1f4acb0] nal_unit_type: 6, nal_ref_idc: 0 [h264 @ 0x1f4acb0] nal_unit_type: 5, nal_ref_idc: 3 [h264 @ 0x1f4acb0] user data:"x264 - core 54 svn-620M - H.264/MPEG-4 AVC codec - Copyleft 2005 - http://www.videolan.org/x264.html - options: cabac=1 ref=5 deblock=1:0:0 analyse=0x1:0x131 me=umh subme=6 brdo=1 mixed_ref=0 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 chroma_qp_offset=0 threads=1 nr=0 decimate=1 mbaff=0 bframes=1 b_pyramid=0 b_adapt=1 b_bias=0 direct=3 wpredb=0 bime=0 keyint=250 keyint_min=25 scenecut=40 rc=2pass bitrate=4214 ratetol=1.0 rceq='blurCplx^(1-qComp)' qcomp=0.60 qpmin=10 qpmax=51 qpstep=4 cplxblur=20.0 qblur=0.5 ip_ratio=1.40 pb_ratio=1.30" [h264 @ 0x1f4acb0] Reinit context to 1280x544, pix_fmt: yuv420p [h264 @ 0x1f4acb0] no picture [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] All info found [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] After avformat_find_stream_info() pos: 94845 bytes read:141348 seeks:2 frames:13 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from './The Simpsons Movie - Trailer_x264.mp4': Metadata: major_brand : isom minor_version : 1 compatible_brands: isomavc1 creation_time : 2007-02-19T05:03:04.000000Z Duration: 00:02:17.30, start: 0.000000, bitrate: 4283 kb/s Stream #0:0(und), 12, 1/24000: Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x544, 4221 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default) Metadata: creation_time : 2007-02-19T05:03:04.000000Z handler_name : GPAC ISO Video Handler Stream #0:1(und), 1, 1/48000: Audio: aac (HE-AAC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 64 kb/s (default) Metadata: creation_time : 2007-02-19T05:03:08.000000Z handler_name : GPAC ISO Audio Handler Successfully opened the file. Parsing a group of options: output url ./out_img/ffmpeg-soft_x264_%d.jpg. Applying option vf (set video filters) with argument fps=1/10. Successfully parsed a group of options. Opening an output file: ./out_img/ffmpeg-soft_x264_%d.jpg. Successfully opened the file. detected 2 logical cores [h264 @ 0x1f951e0] nal_unit_type: 7, nal_ref_idc: 3 [h264 @ 0x1f951e0] nal_unit_type: 8, nal_ref_idc: 3 Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> mjpeg (native)) Press [q] to stop, [?] for help cur_dts is invalid (this is harmless if it occurs once at the start per stream) cur_dts is invalid (this is harmless if it occurs once at the start per stream) [h264 @ 0x1f951e0] nal_unit_type: 6, nal_ref_idc: 0 [h264 @ 0x1f951e0] nal_unit_type: 5, nal_ref_idc: 3 [h264 @ 0x1f951e0] user data:"x264 - core 54 svn-620M - H.264/MPEG-4 AVC codec - Copyleft 2005 - http://www.videolan.org/x264.html - options: cabac=1 ref=5 deblock=1:0:0 analyse=0x1:0x131 me=umh subme=6 brdo=1 mixed_ref=0 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 chroma_qp_offset=0 threads=1 nr=0 decimate=1 mbaff=0 bframes=1 b_pyramid=0 b_adapt=1 b_bias=0 direct=3 wpredb=0 bime=0 keyint=250 keyint_min=25 scenecut=40 rc=2pass bitrate=4214 ratetol=1.0 rceq='blurCplx^(1-qComp)' qcomp=0.60 qpmin=10 qpmax=51 qpstep=4 cplxblur=20.0 qblur=0.5 ip_ratio=1.40 pb_ratio=1.30" [h264 @ 0x1f951e0] Reinit context to 1280x544, pix_fmt: yuv420p [h264 @ 0x1f951e0] no picture cur_dts is invalid (this is harmless if it occurs once at the start per stream) [h264 @ 0x1fa2050] nal_unit_type: 1, nal_ref_idc: 2 [h264 @ 0x1fdcf00] nal_unit_type: 1, nal_ref_idc: 0 cur_dts is invalid (this is harmless if it occurs once at the start per stream) [h264 @ 0x1f951e0] nal_unit_type: 1, nal_ref_idc: 2 [Parsed_fps_0 @ 0x1fa7f50] Setting 'fps' to value '1/10' [Parsed_fps_0 @ 0x1fa7f50] fps=1/10 [graph 0 input from stream 0:0 @ 0x1fa86f0] Setting 'video_size' to value '1280x544' [graph 0 input from stream 0:0 @ 0x1fa86f0] Setting 'pix_fmt' to value '0' [graph 0 input from stream 0:0 @ 0x1fa86f0] Setting 'time_base' to value '1/24000' [graph 0 input from stream 0:0 @ 0x1fa86f0] Setting 'pixel_aspect' to value '0/1' [graph 0 input from stream 0:0 @ 0x1fa86f0] Setting 'sws_param' to value 'flags=2' [graph 0 input from stream 0:0 @ 0x1fa86f0] Setting 'frame_rate' to value '24000/1001' [graph 0 input from stream 0:0 @ 0x1fa86f0] w:1280 h:544 pixfmt:yuv420p tb:1/24000 fr:24000/1001 sar:0/1 sws_param:flags=2 [format @ 0x1fa8030] compat: called with args=[yuvj420p|yuvj422p|yuvj444p] [format @ 0x1fa8030] Setting 'pix_fmts' to value 'yuvj420p|yuvj422p|yuvj444p' [auto_scaler_0 @ 0x1fa8660] Setting 'flags' to value 'bicubic' [auto_scaler_0 @ 0x1fa8660] w:iw h:ih flags:'bicubic' interl:0 [format @ 0x1fa8030] auto-inserting filter 'auto_scaler_0' between the filter 'Parsed_fps_0' and the filter 'format' [AVFilterGraph @ 0x1fa7b80] query_formats: 4 queried, 2 merged, 1 already done, 0 delayed [auto_scaler_0 @ 0x1fa8660] picking yuvj420p out of 3 ref:yuv420p alpha:0 [swscaler @ 0x1fa8f00] deprecated pixel format used, make sure you did set range correctly [auto_scaler_0 @ 0x1fa8660] w:1280 h:544 fmt:yuv420p sar:0/1 -> w:1280 h:544 fmt:yuvj420p sar:0/1 flags:0x4 [mjpeg @ 0x1f71f90] Forcing thread count to 1 for MJPEG encoding, use -thread_type slice or a constant quantizer if you want to use multiple cpu cores [mjpeg @ 0x1f71f90] intra_quant_bias = 96 inter_quant_bias = 0 Output #0, image2, to './out_img/ffmpeg-soft_x264_%d.jpg': Metadata: major_brand : isom minor_version : 1 compatible_brands: isomavc1 encoder : Lavf57.71.100 Stream #0:0(und), 0, 10/1: Video: mjpeg, yuvj420p(pc), 1280x544, q=2-31, 200 kb/s, 0.10 fps, 0.10 tbn, 0.10 tbc (default) Metadata: creation_time : 2007-02-19T05:03:04.000000Z handler_name : GPAC ISO Video Handler encoder : Lavc57.89.100 mjpeg Side data: cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1 cur_dts is invalid (this is harmless if it occurs once at the start per stream) [Parsed_fps_0 @ 0x1fa7f50] Dropping 1 frame(s). [h264 @ 0x1fa2050] nal_unit_type: 1, nal_ref_idc: 0 ... [AVIOContext @ 0x2229af0] Statistics: 0 seeks, 1 writeouts No more output streams to write to, finishing. frame= 15 fps=0.1 q=1.6 Lsize=N/A time=00:02:30.00 bitrate=N/A speed=1.45x video:1382kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown Input file #0 (./The Simpsons Movie - Trailer_x264.mp4): Input stream #0:0 (video): 3288 packets read (72364468 bytes); 3288 frames decoded; Input stream #0:1 (audio): 1 packets read (134 bytes); Total: 3289 packets (72364602 bytes) demuxed Output file #0 (./out_img/ffmpeg-soft_x264_%d.jpg): Output stream #0:0 (video): 15 frames encoded; 15 packets muxed (1414925 bytes); Total: 15 packets (1414925 bytes) muxed bench: utime=164.240s 3288 frames successfully decoded, 0 decoding errors bench: maxrss=39936kB [Parsed_fps_0 @ 0x1fa7f50] 3288 frames in, 15 frames out; 3273 frames dropped, 0 frames duplicated. [AVIOContext @ 0x1f52230] Statistics: 73517562 bytes read, 5 seeks
x265 MIPS SIMD (, ) ffmpeg started on 2010-10-18 at 00:27:14 Report written to "ffmpeg-20101018-002714.log" Command line: ./ffmpeg-mips/ffmpeg-soft/bin/ffmpeg -i ./Tears_400_x265.mp4 -vf "fps=1" "./out_img/ffmpeg-soft_x265_%d.jpg" -report -benchmark ffmpeg version 3.3 Copyright (c) 2000-2017 the FFmpeg developers built with gcc 4.9.2 (Codescape GNU Tools 2016.05-03 for MIPS MTI Linux) configuration: --enable-cross-compile --prefix=../ffmpeg-soft --cross-prefix=/home/stas/mipsfpga/toolchain/mips-mti-linux-gnu/2016.05-03/bin/mips-mti-linux-gnu- --arch=mips --cpu=p5600 --target-os=linux --extra-cflags='-EL -static' --extra-ldflags='-EL -static' --disable-iconv --disable-msa libavutil 55. 58.100 / 55. 58.100 libavcodec 57. 89.100 / 57. 89.100 libavformat 57. 71.100 / 57. 71.100 libavdevice 57. 6.100 / 57. 6.100 libavfilter 6. 82.100 / 6. 82.100 libswscale 4. 6.100 / 4. 6.100 libswresample 2. 7.100 / 2. 7.100 Splitting the commandline. Reading option '-i' ... matched as input url with argument './Tears_400_x265.mp4'. Reading option '-vf' ... matched as option 'vf' (set video filters) with argument 'fps=1'. Reading option './out_img/ffmpeg-soft_x265_%d.jpg' ... matched as output url. Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'. Reading option '-benchmark' ... matched as option 'benchmark' (add timings for benchmarking) with argument '1'. Finished splitting the commandline. Parsing a group of options: global . Applying option report (generate a report) with argument 1. Applying option benchmark (add timings for benchmarking) with argument 1. Successfully parsed a group of options. Parsing a group of options: input url ./Tears_400_x265.mp4. Successfully parsed a group of options. Opening an input file: ./Tears_400_x265.mp4. [file @ 0x1f4a0e0] Setting default whitelist 'file,crypto' [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] ISO: File Type Major Brand: iso4 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] Unknown dref type 0x206c7275 size 12 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] Before avformat_find_stream_info() pos: 705972 bytes read:32827 seeks:1 nb_streams:1 [hevc @ 0x1f4aca0] nal_unit_type: 32(VPS), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f4aca0] Decoding VPS [hevc @ 0x1f4aca0] Main profile bitstream [hevc @ 0x1f4aca0] nal_unit_type: 33(SPS), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f4aca0] Decoding SPS [hevc @ 0x1f4aca0] Main profile bitstream [hevc @ 0x1f4aca0] Decoding VUI [hevc @ 0x1f4aca0] nal_unit_type: 34(PPS), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f4aca0] Decoding PPS [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] All info found [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] After avformat_find_stream_info() pos: 20299 bytes read:65595 seeks:2 frames:1 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from './Tears_400_x265.mp4': Metadata: major_brand : iso4 minor_version : 1 compatible_brands: iso4hvc1 creation_time : 2014-08-25T18:10:46.000000Z Duration: 00:00:13.96, start: 0.125000, bitrate: 404 kb/s Stream #0:0(und), 1, 1/24000: Video: hevc (Main) (hvc1 / 0x31637668), yuv420p(tv), 1920x800, 402 kb/s, 24 fps, 24 tbr, 24k tbn, 24 tbc (default) Metadata: creation_time : 2014-08-25T18:10:46.000000Z handler_name : hevc:fps=24@GPAC0.5.1-DEV-rev4807 Successfully opened the file. Parsing a group of options: output url ./out_img/ffmpeg-soft_x265_%d.jpg. Applying option vf (set video filters) with argument fps=1. Successfully parsed a group of options. Opening an output file: ./out_img/ffmpeg-soft_x265_%d.jpg. Successfully opened the file. detected 2 logical cores [hevc @ 0x1f61a00] nal_unit_type: 32(VPS), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f61a00] Decoding VPS [hevc @ 0x1f61a00] Main profile bitstream [hevc @ 0x1f61a00] nal_unit_type: 33(SPS), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f61a00] Decoding SPS [hevc @ 0x1f61a00] Main profile bitstream [hevc @ 0x1f61a00] Decoding VUI [hevc @ 0x1f61a00] nal_unit_type: 34(PPS), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f61a00] Decoding PPS Stream mapping: Stream #0:0 -> #0:0 (hevc (native) -> mjpeg (native)) Press [q] to stop, [?] for help cur_dts is invalid (this is harmless if it occurs once at the start per stream) cur_dts is invalid (this is harmless if it occurs once at the start per stream) [hevc @ 0x1f61a00] nal_unit_type: 39(SEI_PREFIX), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f61a00] nal_unit_type: 39(SEI_PREFIX), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f61a00] nal_unit_type: 19(IDR_W_RADL), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f61a00] Decoding SEI [hevc @ 0x1f61a00] Skipped PREFIX SEI 5 [hevc @ 0x1f61a00] Decoding SEI [hevc @ 0x1f61a00] Skipped PREFIX SEI 6 cur_dts is invalid (this is harmless if it occurs once at the start per stream) [hevc @ 0x1f7aba0] nal_unit_type: 1(TRAIL_R), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f884d0] nal_unit_type: 1(TRAIL_R), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f884d0] Output frame with POC 0. [hevc @ 0x1f61a00] Decoded frame with POC 0. cur_dts is invalid (this is harmless if it occurs once at the start per stream) [hevc @ 0x1f61a00] nal_unit_type: 0(TRAIL_N), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f61a00] Output frame with POC 1. [hevc @ 0x1f7aba0] Decoded frame with POC 5. cur_dts is invalid (this is harmless if it occurs once at the start per stream) [hevc @ 0x1f7aba0] nal_unit_type: 0(TRAIL_N), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f7aba0] Output frame with POC 2. [hevc @ 0x1f884d0] Decoded frame with POC 3. [Parsed_fps_0 @ 0x1f966c0] Setting 'fps' to value '1' [Parsed_fps_0 @ 0x1f966c0] fps=1/1 [graph 0 input from stream 0:0 @ 0x1f96bb0] Setting 'video_size' to value '1920x800' [graph 0 input from stream 0:0 @ 0x1f96bb0] Setting 'pix_fmt' to value '0' [graph 0 input from stream 0:0 @ 0x1f96bb0] Setting 'time_base' to value '1/24000' [graph 0 input from stream 0:0 @ 0x1f96bb0] Setting 'pixel_aspect' to value '0/1' [graph 0 input from stream 0:0 @ 0x1f96bb0] Setting 'sws_param' to value 'flags=2' [graph 0 input from stream 0:0 @ 0x1f96bb0] Setting 'frame_rate' to value '24/1' [graph 0 input from stream 0:0 @ 0x1f96bb0] w:1920 h:800 pixfmt:yuv420p tb:1/24000 fr:24/1 sar:0/1 sws_param:flags=2 [format @ 0x1f96ad0] compat: called with args=[yuvj420p|yuvj422p|yuvj444p] [format @ 0x1f96ad0] Setting 'pix_fmts' to value 'yuvj420p|yuvj422p|yuvj444p' [hevc @ 0x1f61a00] Decoded frame with POC 1. [hevc @ 0x1f7aba0] Decoded frame with POC 2. [auto_scaler_0 @ 0x1f96350] Setting 'flags' to value 'bicubic' [auto_scaler_0 @ 0x1f96350] w:iw h:ih flags:'bicubic' interl:0 [format @ 0x1f96ad0] auto-inserting filter 'auto_scaler_0' between the filter 'Parsed_fps_0' and the filter 'format' [AVFilterGraph @ 0x1f962f0] query_formats: 4 queried, 2 merged, 1 already done, 0 delayed [auto_scaler_0 @ 0x1f96350] picking yuvj420p out of 3 ref:yuv420p alpha:0 [swscaler @ 0x2153da0] deprecated pixel format used, make sure you did set range correctly [auto_scaler_0 @ 0x1f96350] w:1920 h:800 fmt:yuv420p sar:0/1 -> w:1920 h:800 fmt:yuvj420p sar:0/1 flags:0x4 [mjpeg @ 0x1f5eba0] Forcing thread count to 1 for MJPEG encoding, use -thread_type slice or a constant quantizer if you want to use multiple cpu cores [mjpeg @ 0x1f5eba0] intra_quant_bias = 96 inter_quant_bias = 0 Output #0, image2, to './out_img/ffmpeg-soft_x265_%d.jpg': Metadata: major_brand : iso4 minor_version : 1 compatible_brands: iso4hvc1 encoder : Lavf57.71.100 Stream #0:0(und), 0, 1/1: Video: mjpeg, yuvj420p(pc), 1920x800, q=2-31, 200 kb/s, 1 fps, 1 tbn, 1 tbc (default) Metadata: creation_time : 2014-08-25T18:10:46.000000Z handler_name : hevc:fps=24@GPAC0.5.1-DEV-rev4807 encoder : Lavc57.89.100 mjpeg Side data: cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1 cur_dts is invalid (this is harmless if it occurs once at the start per stream) [hevc @ 0x1f884d0] nal_unit_type: 0(TRAIL_N), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f884d0] Output frame with POC 3. [Parsed_fps_0 @ 0x1f966c0] Dropping 1 frame(s). frame= 0 fps=0.0 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed= 0x cur_dts is invalid (this is harmless if it occurs once at the start per stream) [Parsed_fps_0 @ 0x1f966c0] Dropping 1 frame(s). [hevc @ 0x1f61a00] nal_unit_type: 1(TRAIL_R), nuh_layer_id: 0, temporal_id: 0 cur_dts is invalid (this is harmless if it occurs once at the start per stream) [hevc @ 0x1f61a00] Output frame with POC 4. ... No more output streams to write to, finishing. frame= 15 fps=0.5 q=24.8 Lsize=N/A time=00:00:15.00 bitrate=N/A speed=0.451x video:1084kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown Input file #0 (./Tears_400_x265.mp4): Input stream #0:0 (video): 335 packets read (701773 bytes); 335 frames decoded; Total: 335 packets (701773 bytes) demuxed Output file #0 (./out_img/ffmpeg-soft_x265_%d.jpg): Output stream #0:0 (video): 15 frames encoded; 15 packets muxed (1109604 bytes); Total: 15 packets (1109604 bytes) muxed bench: utime=52.330s 335 frames successfully decoded, 0 decoding errors bench: maxrss=72480kB [Parsed_fps_0 @ 0x1f966c0] 335 frames in, 15 frames out; 320 frames dropped, 0 frames duplicated. [AVIOContext @ 0x1f52220] Statistics: 734659 bytes read, 2 seeks
çµè«
- MIPS SIMD ;
- â . - MIPS SIMD , . ;
- -1 â , , , .
åç
§è³æ
[L1] â -1 ;
[L2] â MIPSfpga-plus github ;
[L3] â P-Class P5600 Multiprocessor Core ;
[L4] â MIPS, ;
[L5] â Texas Instruments. Digital Signal Processors ;
[L6] â GPU ;
[L7] â OpenCL. ;
[L8] â Wikipedia: ;
[L9] â TFilter. Free online FIR filter design tool ;
[L10] â Wikipedia: ;
[L11] â Wikipedia: - ;
[L12] â Wikipedia: - ;
[L13] â Wikipedia: SIMD ;
[L14] â Wikipedia: ;
[L15] â MIPS SIMD ;
[L16] â GCC: MIPS SIMD Architecture (MSA) Support ;
[L17] â GCC: MIPS SIMD Architecture Built-in Functions ;
[L18] â ffmpeg github ( libavcodec/mips/) ;
[L19] â FFmpeg multimedia framework ;
[L20] â Codescape MIPS SDK ;
[L21] â H.264 Demo Clips ;
[L22] â x256. Sample HEVC Video Files ;
[L23] â ffmpeg
[L24] â ;
ããã¥ã¡ã³ã
[D1] â ., . â ;
[D2] â MIPS Architecture for Programmers Volume IV-j: The MIPS32 SIMD Architecture Module ;
[D3] â MIPS SIMD programming. Optimizing multimedia codecs ;
ç»åãšè¡š
[P1] â - -1 . (: L1 );
[P2] â TFilter. 1 ();
[P3] â TFilter. 1 ;
[P4] â TFilter. 2 ();
[P5] â TFilter. 2 ;
[P6] â SIMD- (: D3 );
[P7] â MSA Vector registers (: D2 );
[P8] â MADDV Operation description (: D2 );