Guest User

Untitled

a guest
Jul 19th, 2018
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 113.56 KB | None | 0 0
  1. from enum import Enum, auto
  2. class AVCodecID(Enum):
  3. AV_CODEC_ID_NONE =0
  4.  
  5. # video codecs */
  6. AV_CODEC_ID_MPEG1VIDEO =auto()
  7. AV_CODEC_ID_MPEG2VIDEO =auto() #/< preferred ID for MPEG-1/2 video decoding
  8. AV_CODEC_ID_H261 =auto()
  9. AV_CODEC_ID_H263 =auto()
  10. AV_CODEC_ID_RV10 =auto()
  11. AV_CODEC_ID_RV20 =auto()
  12. AV_CODEC_ID_MJPEG =auto()
  13. AV_CODEC_ID_MJPEGB =auto()
  14. AV_CODEC_ID_LJPEG =auto()
  15. AV_CODEC_ID_SP5X =auto()
  16. AV_CODEC_ID_JPEGLS =auto()
  17. AV_CODEC_ID_MPEG4 =auto()
  18. AV_CODEC_ID_RAWVIDEO =auto()
  19. AV_CODEC_ID_MSMPEG4V1 =auto()
  20. AV_CODEC_ID_MSMPEG4V2 =auto()
  21. AV_CODEC_ID_MSMPEG4V3 =auto()
  22. AV_CODEC_ID_WMV1 =auto()
  23. AV_CODEC_ID_WMV2 =auto()
  24. AV_CODEC_ID_H263P =auto()
  25. AV_CODEC_ID_H263I =auto()
  26. AV_CODEC_ID_FLV1 =auto()
  27. AV_CODEC_ID_SVQ1 =auto()
  28. AV_CODEC_ID_SVQ3 =auto()
  29. AV_CODEC_ID_DVVIDEO =auto()
  30. AV_CODEC_ID_HUFFYUV =auto()
  31. AV_CODEC_ID_CYUV =auto()
  32. AV_CODEC_ID_H264 =auto()
  33. AV_CODEC_ID_INDEO3 =auto()
  34. AV_CODEC_ID_VP3 =auto()
  35. AV_CODEC_ID_THEORA =auto()
  36. AV_CODEC_ID_ASV1 =auto()
  37. AV_CODEC_ID_ASV2 =auto()
  38. AV_CODEC_ID_FFV1 =auto()
  39. AV_CODEC_ID_4XM =auto()
  40. AV_CODEC_ID_VCR1 =auto()
  41. AV_CODEC_ID_CLJR =auto()
  42. AV_CODEC_ID_MDEC =auto()
  43. AV_CODEC_ID_ROQ =auto()
  44. AV_CODEC_ID_INTERPLAY_VIDEO =auto()
  45. AV_CODEC_ID_XAN_WC3 =auto()
  46. AV_CODEC_ID_XAN_WC4 =auto()
  47. AV_CODEC_ID_RPZA =auto()
  48. AV_CODEC_ID_CINEPAK =auto()
  49. AV_CODEC_ID_WS_VQA =auto()
  50. AV_CODEC_ID_MSRLE =auto()
  51. AV_CODEC_ID_MSVIDEO1 =auto()
  52. AV_CODEC_ID_IDCIN =auto()
  53. AV_CODEC_ID_8BPS =auto()
  54. AV_CODEC_ID_SMC =auto()
  55. AV_CODEC_ID_FLIC =auto()
  56. AV_CODEC_ID_TRUEMOTION1 =auto()
  57. AV_CODEC_ID_VMDVIDEO =auto()
  58. AV_CODEC_ID_MSZH =auto()
  59. AV_CODEC_ID_ZLIB =auto()
  60. AV_CODEC_ID_QTRLE =auto()
  61. AV_CODEC_ID_TSCC =auto()
  62. AV_CODEC_ID_ULTI =auto()
  63. AV_CODEC_ID_QDRAW =auto()
  64. AV_CODEC_ID_VIXL =auto()
  65. AV_CODEC_ID_QPEG =auto()
  66. AV_CODEC_ID_PNG =auto()
  67. AV_CODEC_ID_PPM =auto()
  68. AV_CODEC_ID_PBM =auto()
  69. AV_CODEC_ID_PGM =auto()
  70. AV_CODEC_ID_PGMYUV =auto()
  71. AV_CODEC_ID_PAM =auto()
  72. AV_CODEC_ID_FFVHUFF =auto()
  73. AV_CODEC_ID_RV30 =auto()
  74. AV_CODEC_ID_RV40 =auto()
  75. AV_CODEC_ID_VC1 =auto()
  76. AV_CODEC_ID_WMV3 =auto()
  77. AV_CODEC_ID_LOCO =auto()
  78. AV_CODEC_ID_WNV1 =auto()
  79. AV_CODEC_ID_AASC =auto()
  80. AV_CODEC_ID_INDEO2 =auto()
  81. AV_CODEC_ID_FRAPS =auto()
  82. AV_CODEC_ID_TRUEMOTION2 =auto()
  83. AV_CODEC_ID_BMP =auto()
  84. AV_CODEC_ID_CSCD =auto()
  85. AV_CODEC_ID_MMVIDEO =auto()
  86. AV_CODEC_ID_ZMBV =auto()
  87. AV_CODEC_ID_AVS =auto()
  88. AV_CODEC_ID_SMACKVIDEO =auto()
  89. AV_CODEC_ID_NUV =auto()
  90. AV_CODEC_ID_KMVC =auto()
  91. AV_CODEC_ID_FLASHSV =auto()
  92. AV_CODEC_ID_CAVS =auto()
  93. AV_CODEC_ID_JPEG2000 =auto()
  94. AV_CODEC_ID_VMNC =auto()
  95. AV_CODEC_ID_VP5 =auto()
  96. AV_CODEC_ID_VP6 =auto()
  97. AV_CODEC_ID_VP6F =auto()
  98. AV_CODEC_ID_TARGA =auto()
  99. AV_CODEC_ID_DSICINVIDEO =auto()
  100. AV_CODEC_ID_TIERTEXSEQVIDEO =auto()
  101. AV_CODEC_ID_TIFF =auto()
  102. AV_CODEC_ID_GIF =auto()
  103. AV_CODEC_ID_DXA =auto()
  104. AV_CODEC_ID_DNXHD =auto()
  105. AV_CODEC_ID_THP =auto()
  106. AV_CODEC_ID_SGI =auto()
  107. AV_CODEC_ID_C93 =auto()
  108. AV_CODEC_ID_BETHSOFTVID =auto()
  109. AV_CODEC_ID_PTX =auto()
  110. AV_CODEC_ID_TXD =auto()
  111. AV_CODEC_ID_VP6A =auto()
  112. AV_CODEC_ID_AMV =auto()
  113. AV_CODEC_ID_VB =auto()
  114. AV_CODEC_ID_PCX =auto()
  115. AV_CODEC_ID_SUNRAST =auto()
  116. AV_CODEC_ID_INDEO4 =auto()
  117. AV_CODEC_ID_INDEO5 =auto()
  118. AV_CODEC_ID_MIMIC =auto()
  119. AV_CODEC_ID_RL2 =auto()
  120. AV_CODEC_ID_ESCAPE124 =auto()
  121. AV_CODEC_ID_DIRAC =auto()
  122. AV_CODEC_ID_BFI =auto()
  123. AV_CODEC_ID_CMV =auto()
  124. AV_CODEC_ID_MOTIONPIXELS =auto()
  125. AV_CODEC_ID_TGV =auto()
  126. AV_CODEC_ID_TGQ =auto()
  127. AV_CODEC_ID_TQI =auto()
  128. AV_CODEC_ID_AURA =auto()
  129. AV_CODEC_ID_AURA2 =auto()
  130. AV_CODEC_ID_V210X =auto()
  131. AV_CODEC_ID_TMV =auto()
  132. AV_CODEC_ID_V210 =auto()
  133. AV_CODEC_ID_DPX =auto()
  134. AV_CODEC_ID_MAD =auto()
  135. AV_CODEC_ID_FRWU =auto()
  136. AV_CODEC_ID_FLASHSV2 =auto()
  137. AV_CODEC_ID_CDGRAPHICS =auto()
  138. AV_CODEC_ID_R210 =auto()
  139. AV_CODEC_ID_ANM =auto()
  140. AV_CODEC_ID_BINKVIDEO =auto()
  141. AV_CODEC_ID_IFF_ILBM =auto()
  142. #define AV_CODEC_ID_IFF_BYTERUN1 AV_CODEC_ID_IFF_ILBM
  143. AV_CODEC_ID_KGV1 =auto()
  144. AV_CODEC_ID_YOP =auto()
  145. AV_CODEC_ID_VP8 =auto()
  146. AV_CODEC_ID_PICTOR =auto()
  147. AV_CODEC_ID_ANSI =auto()
  148. AV_CODEC_ID_A64_MULTI =auto()
  149. AV_CODEC_ID_A64_MULTI5 =auto()
  150. AV_CODEC_ID_R10K =auto()
  151. AV_CODEC_ID_MXPEG =auto()
  152. AV_CODEC_ID_LAGARITH =auto()
  153. AV_CODEC_ID_PRORES =auto()
  154. AV_CODEC_ID_JV =auto()
  155. AV_CODEC_ID_DFA =auto()
  156. AV_CODEC_ID_WMV3IMAGE =auto()
  157. AV_CODEC_ID_VC1IMAGE =auto()
  158. AV_CODEC_ID_UTVIDEO =auto()
  159. AV_CODEC_ID_BMV_VIDEO =auto()
  160. AV_CODEC_ID_VBLE =auto()
  161. AV_CODEC_ID_DXTORY =auto()
  162. AV_CODEC_ID_V410 =auto()
  163. AV_CODEC_ID_XWD =auto()
  164. AV_CODEC_ID_CDXL =auto()
  165. AV_CODEC_ID_XBM =auto()
  166. AV_CODEC_ID_ZEROCODEC =auto()
  167. AV_CODEC_ID_MSS1 =auto()
  168. AV_CODEC_ID_MSA1 =auto()
  169. AV_CODEC_ID_TSCC2 =auto()
  170. AV_CODEC_ID_MTS2 =auto()
  171. AV_CODEC_ID_CLLC =auto()
  172. AV_CODEC_ID_MSS2 =auto()
  173. AV_CODEC_ID_VP9 =auto()
  174. AV_CODEC_ID_AIC =auto()
  175. AV_CODEC_ID_ESCAPE130 =auto()
  176. AV_CODEC_ID_G2M =auto()
  177. AV_CODEC_ID_WEBP =auto()
  178. AV_CODEC_ID_HNM4_VIDEO =auto()
  179. AV_CODEC_ID_HEVC =auto()
  180. #define AV_CODEC_ID_H265 AV_CODEC_ID_HEVC
  181. AV_CODEC_ID_FIC =auto()
  182. AV_CODEC_ID_ALIAS_PIX =auto()
  183. AV_CODEC_ID_BRENDER_PIX =auto()
  184. AV_CODEC_ID_PAF_VIDEO =auto()
  185. AV_CODEC_ID_EXR =auto()
  186. AV_CODEC_ID_VP7 =auto()
  187. AV_CODEC_ID_SANM =auto()
  188. AV_CODEC_ID_SGIRLE =auto()
  189. AV_CODEC_ID_MVC1 =auto()
  190. AV_CODEC_ID_MVC2 =auto()
  191. AV_CODEC_ID_HQX =auto()
  192. AV_CODEC_ID_TDSC =auto()
  193. AV_CODEC_ID_HQ_HQA =auto()
  194. AV_CODEC_ID_HAP =auto()
  195. AV_CODEC_ID_DDS =auto()
  196. AV_CODEC_ID_DXV =auto()
  197. AV_CODEC_ID_SCREENPRESSO =auto()
  198. AV_CODEC_ID_RSCC =auto()
  199.  
  200. AV_CODEC_ID_Y41P = 0x8000
  201. AV_CODEC_ID_AVRP =auto()
  202. AV_CODEC_ID_012V =auto()
  203. AV_CODEC_ID_AVUI =auto()
  204. AV_CODEC_ID_AYUV =auto()
  205. AV_CODEC_ID_TARGA_Y216 =auto()
  206. AV_CODEC_ID_V308 =auto()
  207. AV_CODEC_ID_V408 =auto()
  208. AV_CODEC_ID_YUV4 =auto()
  209. AV_CODEC_ID_AVRN =auto()
  210. AV_CODEC_ID_CPIA =auto()
  211. AV_CODEC_ID_XFACE =auto()
  212. AV_CODEC_ID_SNOW =auto()
  213. AV_CODEC_ID_SMVJPEG =auto()
  214. AV_CODEC_ID_APNG =auto()
  215. AV_CODEC_ID_DAALA =auto()
  216. AV_CODEC_ID_CFHD =auto()
  217. AV_CODEC_ID_TRUEMOTION2RT =auto()
  218. AV_CODEC_ID_M101 =auto()
  219. AV_CODEC_ID_MAGICYUV =auto()
  220. AV_CODEC_ID_SHEERVIDEO =auto()
  221. AV_CODEC_ID_YLC =auto()
  222. AV_CODEC_ID_PSD =auto()
  223. AV_CODEC_ID_PIXLET =auto()
  224. AV_CODEC_ID_SPEEDHQ =auto()
  225. AV_CODEC_ID_FMVC =auto()
  226. AV_CODEC_ID_SCPR =auto()
  227. AV_CODEC_ID_CLEARVIDEO =auto()
  228. AV_CODEC_ID_XPM =auto()
  229. AV_CODEC_ID_AV1 =auto()
  230. AV_CODEC_ID_BITPACKED =auto()
  231. AV_CODEC_ID_MSCC =auto()
  232. AV_CODEC_ID_SRGC =auto()
  233. AV_CODEC_ID_SVG =auto()
  234. AV_CODEC_ID_GDV =auto()
  235. AV_CODEC_ID_FITS =auto()
  236.  
  237. # various PCM "codecs" */
  238. AV_CODEC_ID_FIRST_AUDIO = 0x10000 #/< A dummy id pointing at the start of audio codecs
  239. AV_CODEC_ID_PCM_S16LE = 0x10000
  240. AV_CODEC_ID_PCM_S16BE =auto()
  241. AV_CODEC_ID_PCM_U16LE =auto()
  242. AV_CODEC_ID_PCM_U16BE =auto()
  243. AV_CODEC_ID_PCM_S8 =auto()
  244. AV_CODEC_ID_PCM_U8 =auto()
  245. AV_CODEC_ID_PCM_MULAW =auto()
  246. AV_CODEC_ID_PCM_ALAW =auto()
  247. AV_CODEC_ID_PCM_S32LE =auto()
  248. AV_CODEC_ID_PCM_S32BE =auto()
  249. AV_CODEC_ID_PCM_U32LE =auto()
  250. AV_CODEC_ID_PCM_U32BE =auto()
  251. AV_CODEC_ID_PCM_S24LE =auto()
  252. AV_CODEC_ID_PCM_S24BE =auto()
  253. AV_CODEC_ID_PCM_U24LE =auto()
  254. AV_CODEC_ID_PCM_U24BE =auto()
  255. AV_CODEC_ID_PCM_S24DAUD =auto()
  256. AV_CODEC_ID_PCM_ZORK =auto()
  257. AV_CODEC_ID_PCM_S16LE_PLANAR =auto()
  258. AV_CODEC_ID_PCM_DVD =auto()
  259. AV_CODEC_ID_PCM_F32BE =auto()
  260. AV_CODEC_ID_PCM_F32LE =auto()
  261. AV_CODEC_ID_PCM_F64BE =auto()
  262. AV_CODEC_ID_PCM_F64LE =auto()
  263. AV_CODEC_ID_PCM_BLURAY =auto()
  264. AV_CODEC_ID_PCM_LXF =auto()
  265. AV_CODEC_ID_S302M =auto()
  266. AV_CODEC_ID_PCM_S8_PLANAR =auto()
  267. AV_CODEC_ID_PCM_S24LE_PLANAR =auto()
  268. AV_CODEC_ID_PCM_S32LE_PLANAR =auto()
  269. AV_CODEC_ID_PCM_S16BE_PLANAR =auto()
  270.  
  271. AV_CODEC_ID_PCM_S64LE = 0x10800
  272. AV_CODEC_ID_PCM_S64BE =auto()
  273. AV_CODEC_ID_PCM_F16LE =auto()
  274. AV_CODEC_ID_PCM_F24LE =auto()
  275.  
  276. # various ADPCM codecs */
  277. AV_CODEC_ID_ADPCM_IMA_QT = 0x11000
  278. AV_CODEC_ID_ADPCM_IMA_WAV =auto()
  279. AV_CODEC_ID_ADPCM_IMA_DK3 =auto()
  280. AV_CODEC_ID_ADPCM_IMA_DK4 =auto()
  281. AV_CODEC_ID_ADPCM_IMA_WS =auto()
  282. AV_CODEC_ID_ADPCM_IMA_SMJPEG =auto()
  283. AV_CODEC_ID_ADPCM_MS =auto()
  284. AV_CODEC_ID_ADPCM_4XM =auto()
  285. AV_CODEC_ID_ADPCM_XA =auto()
  286. AV_CODEC_ID_ADPCM_ADX =auto()
  287. AV_CODEC_ID_ADPCM_EA =auto()
  288. AV_CODEC_ID_ADPCM_G726 =auto()
  289. AV_CODEC_ID_ADPCM_CT =auto()
  290. AV_CODEC_ID_ADPCM_SWF =auto()
  291. AV_CODEC_ID_ADPCM_YAMAHA =auto()
  292. AV_CODEC_ID_ADPCM_SBPRO_4 =auto()
  293. AV_CODEC_ID_ADPCM_SBPRO_3 =auto()
  294. AV_CODEC_ID_ADPCM_SBPRO_2 =auto()
  295. AV_CODEC_ID_ADPCM_THP =auto()
  296. AV_CODEC_ID_ADPCM_IMA_AMV =auto()
  297. AV_CODEC_ID_ADPCM_EA_R1 =auto()
  298. AV_CODEC_ID_ADPCM_EA_R3 =auto()
  299. AV_CODEC_ID_ADPCM_EA_R2 =auto()
  300. AV_CODEC_ID_ADPCM_IMA_EA_SEAD =auto()
  301. AV_CODEC_ID_ADPCM_IMA_EA_EACS =auto()
  302. AV_CODEC_ID_ADPCM_EA_XAS =auto()
  303. AV_CODEC_ID_ADPCM_EA_MAXIS_XA =auto()
  304. AV_CODEC_ID_ADPCM_IMA_ISS =auto()
  305. AV_CODEC_ID_ADPCM_G722 =auto()
  306. AV_CODEC_ID_ADPCM_IMA_APC =auto()
  307. AV_CODEC_ID_ADPCM_VIMA =auto()
  308.  
  309. AV_CODEC_ID_ADPCM_AFC = 0x11800
  310. AV_CODEC_ID_ADPCM_IMA_OKI =auto()
  311. AV_CODEC_ID_ADPCM_DTK =auto()
  312. AV_CODEC_ID_ADPCM_IMA_RAD =auto()
  313. AV_CODEC_ID_ADPCM_G726LE =auto()
  314. AV_CODEC_ID_ADPCM_THP_LE =auto()
  315. AV_CODEC_ID_ADPCM_PSX =auto()
  316. AV_CODEC_ID_ADPCM_AICA =auto()
  317. AV_CODEC_ID_ADPCM_IMA_DAT4 =auto()
  318. AV_CODEC_ID_ADPCM_MTAF =auto()
  319.  
  320. # AMR */
  321. AV_CODEC_ID_AMR_NB = 0x12000
  322. AV_CODEC_ID_AMR_WB =auto()
  323.  
  324. # RealAudio codecs*/
  325. AV_CODEC_ID_RA_144 = 0x13000
  326. AV_CODEC_ID_RA_288 =auto()
  327.  
  328. # various DPCM codecs */
  329. AV_CODEC_ID_ROQ_DPCM = 0x14000
  330. AV_CODEC_ID_INTERPLAY_DPCM =auto()
  331. AV_CODEC_ID_XAN_DPCM =auto()
  332. AV_CODEC_ID_SOL_DPCM =auto()
  333.  
  334. AV_CODEC_ID_SDX2_DPCM = 0x14800
  335. AV_CODEC_ID_GREMLIN_DPCM =auto()
  336.  
  337. # audio codecs */
  338. AV_CODEC_ID_MP2 = 0x15000
  339. AV_CODEC_ID_MP3 =auto() #/< preferred ID for decoding MPEG audio layer 1, 2 or 3
  340. AV_CODEC_ID_AAC =auto()
  341. AV_CODEC_ID_AC3 =auto()
  342. AV_CODEC_ID_DTS =auto()
  343. AV_CODEC_ID_VORBIS =auto()
  344. AV_CODEC_ID_DVAUDIO =auto()
  345. AV_CODEC_ID_WMAV1 =auto()
  346. AV_CODEC_ID_WMAV2 =auto()
  347. AV_CODEC_ID_MACE3 =auto()
  348. AV_CODEC_ID_MACE6 =auto()
  349. AV_CODEC_ID_VMDAUDIO =auto()
  350. AV_CODEC_ID_FLAC =auto()
  351. AV_CODEC_ID_MP3ADU =auto()
  352. AV_CODEC_ID_MP3ON4 =auto()
  353. AV_CODEC_ID_SHORTEN =auto()
  354. AV_CODEC_ID_ALAC =auto()
  355. AV_CODEC_ID_WESTWOOD_SND1 =auto()
  356. AV_CODEC_ID_GSM =auto() #/< as in Berlin toast format
  357. AV_CODEC_ID_QDM2 =auto()
  358. AV_CODEC_ID_COOK =auto()
  359. AV_CODEC_ID_TRUESPEECH =auto()
  360. AV_CODEC_ID_TTA =auto()
  361. AV_CODEC_ID_SMACKAUDIO =auto()
  362. AV_CODEC_ID_QCELP =auto()
  363. AV_CODEC_ID_WAVPACK =auto()
  364. AV_CODEC_ID_DSICINAUDIO =auto()
  365. AV_CODEC_ID_IMC =auto()
  366. AV_CODEC_ID_MUSEPACK7 =auto()
  367. AV_CODEC_ID_MLP =auto()
  368. AV_CODEC_ID_GSM_MS =auto() # as found in WAV */
  369. AV_CODEC_ID_ATRAC3 =auto()
  370. AV_CODEC_ID_APE =auto()
  371. AV_CODEC_ID_NELLYMOSER =auto()
  372. AV_CODEC_ID_MUSEPACK8 =auto()
  373. AV_CODEC_ID_SPEEX =auto()
  374. AV_CODEC_ID_WMAVOICE =auto()
  375. AV_CODEC_ID_WMAPRO =auto()
  376. AV_CODEC_ID_WMALOSSLESS =auto()
  377. AV_CODEC_ID_ATRAC3P =auto()
  378. AV_CODEC_ID_EAC3 =auto()
  379. AV_CODEC_ID_SIPR =auto()
  380. AV_CODEC_ID_MP1 =auto()
  381. AV_CODEC_ID_TWINVQ =auto()
  382. AV_CODEC_ID_TRUEHD =auto()
  383. AV_CODEC_ID_MP4ALS =auto()
  384. AV_CODEC_ID_ATRAC1 =auto()
  385. AV_CODEC_ID_BINKAUDIO_RDFT =auto()
  386. AV_CODEC_ID_BINKAUDIO_DCT =auto()
  387. AV_CODEC_ID_AAC_LATM =auto()
  388. AV_CODEC_ID_QDMC =auto()
  389. AV_CODEC_ID_CELT =auto()
  390. AV_CODEC_ID_G723_1 =auto()
  391. AV_CODEC_ID_G729 =auto()
  392. AV_CODEC_ID_8SVX_EXP =auto()
  393. AV_CODEC_ID_8SVX_FIB =auto()
  394. AV_CODEC_ID_BMV_AUDIO =auto()
  395. AV_CODEC_ID_RALF =auto()
  396. AV_CODEC_ID_IAC =auto()
  397. AV_CODEC_ID_ILBC =auto()
  398. AV_CODEC_ID_OPUS =auto()
  399. AV_CODEC_ID_COMFORT_NOISE =auto()
  400. AV_CODEC_ID_TAK =auto()
  401. AV_CODEC_ID_METASOUND =auto()
  402. AV_CODEC_ID_PAF_AUDIO =auto()
  403. AV_CODEC_ID_ON2AVC =auto()
  404. AV_CODEC_ID_DSS_SP =auto()
  405. AV_CODEC_ID_CODEC2 =auto()
  406.  
  407. AV_CODEC_ID_FFWAVESYNTH = 0x15800
  408. AV_CODEC_ID_SONIC =auto()
  409. AV_CODEC_ID_SONIC_LS =auto()
  410. AV_CODEC_ID_EVRC =auto()
  411. AV_CODEC_ID_SMV =auto()
  412. AV_CODEC_ID_DSD_LSBF =auto()
  413. AV_CODEC_ID_DSD_MSBF =auto()
  414. AV_CODEC_ID_DSD_LSBF_PLANAR =auto()
  415. AV_CODEC_ID_DSD_MSBF_PLANAR =auto()
  416. AV_CODEC_ID_4GV =auto()
  417. AV_CODEC_ID_INTERPLAY_ACM =auto()
  418. AV_CODEC_ID_XMA1 =auto()
  419. AV_CODEC_ID_XMA2 =auto()
  420. AV_CODEC_ID_DST =auto()
  421. AV_CODEC_ID_ATRAC3AL =auto()
  422. AV_CODEC_ID_ATRAC3PAL =auto()
  423. AV_CODEC_ID_DOLBY_E =auto()
  424. AV_CODEC_ID_APTX =auto()
  425. AV_CODEC_ID_APTX_HD =auto()
  426. AV_CODEC_ID_SBC =auto()
  427.  
  428. # subtitle codecs */
  429. AV_CODEC_ID_FIRST_SUBTITLE = 0x17000 #/< A dummy ID pointing at the start of subtitle codecs.
  430. AV_CODEC_ID_DVD_SUBTITLE = 0x17000
  431. AV_CODEC_ID_DVB_SUBTITLE =auto()
  432. AV_CODEC_ID_TEXT =auto() #/< raw UTF-8 text
  433. AV_CODEC_ID_XSUB =auto()
  434. AV_CODEC_ID_SSA =auto()
  435. AV_CODEC_ID_MOV_TEXT =auto()
  436. AV_CODEC_ID_HDMV_PGS_SUBTITLE =auto()
  437. AV_CODEC_ID_DVB_TELETEXT =auto()
  438. AV_CODEC_ID_SRT =auto()
  439.  
  440. AV_CODEC_ID_MICRODVD = 0x17800
  441. AV_CODEC_ID_EIA_608 =auto()
  442. AV_CODEC_ID_JACOSUB =auto()
  443. AV_CODEC_ID_SAMI =auto()
  444. AV_CODEC_ID_REALTEXT =auto()
  445. AV_CODEC_ID_STL =auto()
  446. AV_CODEC_ID_SUBVIEWER1 =auto()
  447. AV_CODEC_ID_SUBVIEWER =auto()
  448. AV_CODEC_ID_SUBRIP =auto()
  449. AV_CODEC_ID_WEBVTT =auto()
  450. AV_CODEC_ID_MPL2 =auto()
  451. AV_CODEC_ID_VPLAYER =auto()
  452. AV_CODEC_ID_PJS =auto()
  453. AV_CODEC_ID_ASS =auto()
  454. AV_CODEC_ID_HDMV_TEXT_SUBTITLE =auto()
  455. AV_CODEC_ID_TTML =auto()
  456.  
  457. # other specific kind of codecs (generally used for attachments) */
  458. AV_CODEC_ID_FIRST_UNKNOWN = 0x18000 #/< A dummy ID pointing at the start of various fake codecs.
  459. AV_CODEC_ID_TTF = 0x18000
  460.  
  461. AV_CODEC_ID_SCTE_35 =auto() #/< Contain timestamp estimated through PCR of program stream.
  462. AV_CODEC_ID_BINTEXT = 0x18800
  463. AV_CODEC_ID_XBIN =auto()
  464. AV_CODEC_ID_IDF =auto()
  465. AV_CODEC_ID_OTF =auto()
  466. AV_CODEC_ID_SMPTE_KLV =auto()
  467. AV_CODEC_ID_DVD_NAV =auto()
  468. AV_CODEC_ID_TIMED_ID3 =auto()
  469. AV_CODEC_ID_BIN_DATA =auto()
  470.  
  471.  
  472. AV_CODEC_ID_PROBE = 0x19000 #/< codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it
  473.  
  474. AV_CODEC_ID_MPEG2TS = 0x20000 #*< _FAKE_ codec to indicate a raw MPEG-2 TS
  475. #* stream (only used by libavformat) */
  476. AV_CODEC_ID_MPEG4SYSTEMS = 0x20001 #*< _FAKE_ codec to indicate a MPEG-4 Systems
  477. #* stream (only used by libavformat) */
  478. AV_CODEC_ID_FFMETADATA = 0x21000 #/< Dummy codec for streams containing only metadata information.
  479. AV_CODEC_ID_WRAPPED_AVFRAME = 0x21001 #/< Passthrough codec, AVFrames wrapped in AVPacket
  480. '''
  481. '''
  482.  
  483. import ctypes
  484. from ctypes import *
  485. from ctypes.wintypes import *
  486. ULONG_PTR = ctypes.POINTER(DWORD)
  487. class AVProfile(ctypes.Structure):#avcodec.h
  488. pass
  489. class AVProfile(ctypes.Structure):#avcodec.h
  490. _fields_ = (('profile', c_int),
  491. ('name', c_char_p)
  492. )
  493. #AVProfile
  494. class AVRational(ctypes.Structure): #rational.h
  495. pass
  496. class AVClass(ctypes.Structure): #log.h
  497. pass
  498. class AVCodecDescriptor(ctypes.Structure): #avcodec.h
  499. _fields_ = (('id', c_int), #enum AVCodecID
  500. ('type', c_int), #enum AVMediaType
  501. ('name', c_char_p),
  502. ('long_name', c_char_p),
  503. ('props', c_int),
  504. ('mime_types', POINTER(c_char_p)),
  505. ('profiles', POINTER(AVProfile)))
  506. #AVCodecDescriptor
  507. class RcOverride(ctypes.Structure): #avcodec.h
  508. pass
  509. class RcOverride(ctypes.Structure): #avcodec.h
  510. _fields_ = (('start_frame', c_int),
  511. ('end_frame', c_int),
  512. ('qscale', c_int),
  513. ('quality_factor', c_float)
  514. )
  515. #RcOverride
  516. class MpegEncContext(ctypes.Structure): #avcodec.h
  517. pass
  518. class AVBufferRef(ctypes.Structure): #buffer.h
  519. pass
  520. class AVHWAccel(ctypes.Structure): #avcodec.h
  521. pass
  522. class AVCodecDefault(ctypes.Structure):
  523. pass
  524. class AVSubtitle(ctypes.Structure): #avcodec.h
  525. pass
  526. class AVPacket(ctypes.Structure): #avcodec.h
  527. pass
  528. class AVFrame(ctypes.Structure): #frame.h
  529. pass
  530. class AVCodecHWConfigInternal(ctypes.Structure):
  531. pass
  532. class AVCodec(ctypes.Structure): #avcodec.h
  533. pass
  534. class AVCodecContext(ctypes.Structure): #avcodec.h
  535. pass
  536. class AVCodecInternal(ctypes.Structure):
  537. pass
  538. class AVFrameSideData(ctypes.Structure): #frame.h
  539. pass
  540. class AVOptionRange(ctypes.Structure): #opt.h
  541. pass
  542. class AVOptionRanges(ctypes.Structure): #opt.h
  543. pass
  544. class AVDictionary(ctypes.Structure): #dict.h
  545. pass
  546. class AVBuffer(ctypes.Structure): #dict.h
  547. pass
  548. class AVCodecParserContext(ctypes.Structure): #avcodec.h
  549. pass
  550. class AVCodecParser(ctypes.Structure): #avcodec.h
  551. pass
  552.  
  553. class AVCodecParser(ctypes.Structure): #avcodec.h
  554. _fields_=(('codec_ids',c_int*5),
  555. ('priv_data_size',c_int),
  556. ('parser_init',POINTER(CFUNCTYPE(c_int,POINTER(AVCodecParserContext)))),
  557. ('parser_parse',POINTER(CFUNCTYPE(c_int,POINTER(AVCodecParserContext),
  558. POINTER(AVCodecContext),
  559. POINTER(POINTER(c_uint8)),POINTER(c_int),
  560. POINTER(c_uint8),c_int))),
  561. ('parser_close',POINTER(CFUNCTYPE(None,POINTER(AVCodecParserContext)))),
  562. ('split',POINTER(CFUNCTYPE(c_int,POINTER(AVCodecParserContext),POINTER(c_uint8),c_int))),
  563. ('next',POINTER(AVCodecParser)))
  564. #AVCodecParser
  565.  
  566. AV_PARSER_PTS_NB=4 #avcodec.h
  567. class AVCodecParserContext(ctypes.Structure): #avcodec.h
  568. _fields_=(('priv_data',c_void_p),
  569. ('parser',POINTER(AVCodecParser)),
  570. ('frame_offset',c_int64),
  571. ('cur_offset',c_int64),
  572. ('next_frame_offset',c_int64),
  573. ('pict_type',c_int),
  574. ('repeat_pict',c_int),
  575. ('pts',c_int64),
  576. ('dts',c_int64),
  577. ('last_pts',c_int64),
  578. ('last_dts',c_int64),
  579. ('fetch_timestamp',c_int),
  580. ('cur_frame_start_index',c_int),
  581. ('cur_frame_offset',c_int64*AV_PARSER_PTS_NB),
  582. ('cur_frame_pts',c_int64*AV_PARSER_PTS_NB),
  583. ('cur_frame_dts',c_int64*AV_PARSER_PTS_NB),
  584. ('flags',c_int),
  585. ('offset',c_int64),
  586. ('cur_frame_end',c_int64*AV_PARSER_PTS_NB),
  587. ('key_frame',c_int),
  588. ('convergence_duration',c_int64),
  589. ('dts_sync_point',c_int),
  590. ('dts_ref_dts_delta',c_int),
  591. ('pts_dts_delta',c_int),
  592. ('cur_frame_pos',c_int64*AV_PARSER_PTS_NB),
  593. ('pos',c_int64),
  594. ('last_pos',c_int64),
  595. ('duration',c_int),
  596. ('field_order',c_int), #enum AVFieldOrder
  597. ('picture_structure',c_int), #enum AVPictureStructure
  598. ('output_picture_number',c_int),
  599. ('width',c_int),
  600. ('height',c_int),
  601. ('coded_width',c_int),
  602. ('coded_height',c_int),
  603. ('format',c_int))
  604. #AVCodecParserContext
  605.  
  606. class MpegEncContext(ctypes.Structure): #mpegvideo.h
  607. _fields_=()
  608. #MpegEncContext
  609. class AVRational(ctypes.Structure): #rational.h
  610. _fields_=(('num',c_int),
  611. ('den',c_int))
  612. #AVRational
  613. intptr_t=c_long
  614. atomic_uint=intptr_t
  615. class AVBuffer(ctypes.Structure): #dict.h
  616. _fields_=(('data',POINTER(c_uint8)),
  617. ('size',c_int),
  618. ('refcount',atomic_uint),
  619. ('free',POINTER(CFUNCTYPE(None,c_void_p,POINTER(c_uint8)))),
  620. ('opaque',c_void_p),
  621. ('flags',c_int))
  622. #AVBuffer
  623. class AVBufferRef(ctypes.Structure): #buffer.h
  624. _fields_ = (('buffer',POINTER(AVBuffer)),
  625. ('data',POINTER(c_uint8)),
  626. ('size',c_int))
  627. #AVBufferRef
  628. class AVCodecHWConfig(ctypes.Structure):
  629. _fields_=(('pix_fmt',c_int), #enum AVPixelFormat
  630. ('methods',c_int),
  631. ('device_type',c_int)) #enum AVHWDeviceType
  632. #AVCodecHWConfig
  633. class AVCodecHWConfigInternal(ctypes.Structure):
  634. _fields_=(('public',AVCodecHWConfig),
  635. ('hwaccel',POINTER(AVHWAccel)))
  636. #AVCodecHWConfigInternal
  637. class AVDictionaryEntry(ctypes.Structure):
  638. _fields_=(('key',c_char_p),
  639. ('value', c_char_p))
  640. #AVDictionaryEntry
  641. class AVDictionary(ctypes.Structure): #dict.h
  642. _fields_=(('count',c_int),
  643. ('elems', POINTER(AVDictionaryEntry)))
  644. #AVDictionary
  645. class AVOptionRange(ctypes.Structure): #opt.h
  646. _fields_ = (('str',c_char_p),
  647. ('value_min', c_double),
  648. ('value_max', c_double),
  649. ('component_min', c_double),
  650. ('component_max', c_double),
  651. ('is_range', c_int))
  652. #AVOptionRange
  653. class AVOptionRanges(ctypes.Structure): #opt.h
  654. _fields_ = (('range',POINTER(POINTER(AVOptionRange))),
  655. ('nb_ranges', c_int),
  656. ('nb_components', c_int))
  657. #AVOptionRanges
  658. AV_NUM_DATA_POINTERS=8 #frame.h
  659. AV_INPUT_BUFFER_PADDING_SIZE=64 #avcodec.h
  660. class _default_val_union(ctypes.Union):
  661. _fields_ = (('i64', c_int64),
  662. ('dbl', c_double),
  663. ('str', c_char_p),
  664. ('q', AVRational))
  665.  
  666. class AVOption(ctypes.Structure): #opt.h
  667. _fields_ = (('name', c_char_p),
  668. ('help', c_char_p),
  669. ('offset', c_int),
  670. ('type', c_int),#enum AVOptionType
  671. ('default_val', _default_val_union),
  672. ('min', c_double),
  673. ('max', c_double),
  674. ('flags', c_int),
  675. ('unit', c_char_p))
  676. #AVOption
  677. class AVClass(ctypes.Structure): #log.h
  678. _fields_ = (('class_name', c_char_p),
  679. ('item_name', POINTER(CFUNCTYPE(c_char_p,c_void_p))),
  680. ('option', POINTER(AVOption)),
  681. ('version', c_int),
  682. ('log_level_offset_offset', c_int),
  683. ('parent_log_context_offset', c_int),
  684. ('child_next', POINTER(CFUNCTYPE(c_void_p,c_void_p,c_void_p))),
  685. ('child_class_next', POINTER(CFUNCTYPE(POINTER(AVClass),POINTER(AVClass)))),
  686. ('category', c_int),#enum AVClassCategory
  687. ('get_category', POINTER(CFUNCTYPE(c_int,c_void_p))), #enum AVClassCategory
  688. ('query_ranges', POINTER(CFUNCTYPE(c_int,POINTER(POINTER(AVOptionRanges)),c_void_p,c_char_p,c_int))))
  689. #AVClass
  690. class AVFrameSideData(ctypes.Structure): #frame.h
  691. _fields_ = (('type', c_int), #enum AVFrameSideDataType
  692. ('data', POINTER(c_uint8)),
  693. ('size', c_int),
  694. ('metadata', POINTER(AVDictionary)),
  695. ('buf', POINTER(AVBufferRef)))
  696. #AVFrameSideData
  697. class AVFrame(ctypes.Structure): #frame.h
  698. _fields_ = (('data',POINTER(c_uint8)*AV_NUM_DATA_POINTERS), #uint8_t *data[AV_NUM_DATA_POINTERS];
  699. ('linesize',c_int*AV_NUM_DATA_POINTERS),
  700. ('extended_data',POINTER(POINTER(c_uint8))),
  701. ('width', c_int),
  702. ('height', c_int),
  703. ('nb_samples', c_int),
  704. ('format', c_int),
  705. ('key_frame', c_int),
  706. ('pict_type', c_int), #enum AVPictureType
  707. ('sample_aspect_ratio', AVRational),
  708. ('pts', c_int64),
  709. ('pkt_pts', c_int64),
  710. ('pkt_dts', c_int64),
  711. ('coded_picture_number', c_int),
  712. ('display_picture_number', c_int),
  713. ('quality', c_int),
  714. ('opaque', c_void_p),
  715. ('error', c_uint64*AV_NUM_DATA_POINTERS),
  716. ('repeat_pict', c_int),
  717. ('interlaced_frame', c_int),
  718. ('top_field_first', c_int),
  719. ('palette_has_changed', c_int),
  720. ('reordered_opaque', c_int64),
  721. ('sample_rate', c_int),
  722. ('channel_layout', c_uint64),
  723. ('buf', POINTER(AVBufferRef)*AV_NUM_DATA_POINTERS), #AVBufferRef *buf[AV_NUM_DATA_POINTERS];
  724. ('extended_buf', POINTER(POINTER(AVBufferRef))),
  725. ('nb_extended_buf', c_int),
  726. ('side_data', POINTER(POINTER(AVFrameSideData))),
  727. ('nb_side_data', c_int),
  728. ('flags', c_int),
  729. ('color_range', c_int), #enum AVColorRange
  730. ('color_primaries', c_int), #enum AVColorPrimaries
  731. ('color_trc', c_int), #enum AVColorTransferCharacteristic
  732. ('colorspace', c_int), #enum AVColorSpace
  733. ('chroma_location', c_int), #enum AVChromaLocation
  734. ('best_effort_timestamp', c_int64),
  735. ('pkt_pos', c_int64),
  736. ('pkt_duration', c_int64),
  737. ('metadata', POINTER(AVDictionary)),
  738. ('decode_error_flags', c_int),
  739. ('channels', c_int),
  740. ('pkt_size', c_int),
  741. ('qscale_table', POINTER(c_int8)),
  742. ('qstride', c_int),
  743. ('qscale_type', c_int),
  744. ('qp_table_buf', POINTER(AVBufferRef)),
  745. ('hw_frames_ctx', POINTER(AVBufferRef)),
  746. ('opaque_ref', POINTER(AVBufferRef)),
  747. ('crop_top' ,c_size_t),
  748. ('crop_bottom',c_size_t),
  749. ('crop_left' ,c_size_t),
  750. ('crop_right' ,c_size_t),
  751. ('private_ref', POINTER(AVBufferRef)))
  752. #AVFrame
  753. class AVPicture(ctypes.Structure): #avcodec.h
  754. _fields_ = (('data' ,POINTER(c_uint8)*AV_NUM_DATA_POINTERS),
  755. ('linesize' ,c_uint8*AV_NUM_DATA_POINTERS))
  756. #AVPicture
  757. class AVSubtitleRect(ctypes.Structure): #avcodec.h
  758. _fields_ = (('x' ,c_int),
  759. ('y' ,c_int),
  760. ('w' ,c_int),
  761. ('h' ,c_int),
  762. ('nb_colors',AVPicture),
  763. ('pict',c_int),
  764. ('data',POINTER(c_uint)*4),
  765. ('linesize',(c_int*4)),
  766. ('type', c_int), #enum AVSubtitleType
  767. ('text', c_char_p),
  768. ('ass', c_char_p),
  769. ('flags', c_int))
  770. #AVSubtitle
  771. class AVSubtitle(ctypes.Structure): #avcodec.h
  772. _fields_ = (('format', c_uint16),
  773. ('start_display_time', c_uint32),
  774. ('end_display_time', c_uint32),
  775. ('num_rects', c_uint),
  776. ('rects', POINTER(POINTER(AVSubtitleRect))),
  777. ('pts', c_int64))
  778. #AVSubtitle
  779. class AVPacket(ctypes.Structure): #avcodec.h
  780. _fields_ = (('buf', POINTER(AVBufferRef)),
  781. ('pts', c_int64),
  782. ('dts', c_int64),
  783. ('data', POINTER(c_uint8)),
  784. ('size', c_int),
  785. ('stream_index', c_int),
  786. ('flags', c_int),
  787. ('side_data', POINTER(c_int)), #enum AVPacketSideData
  788. ('side_data_elems', c_int),
  789. ('duration', c_int64),
  790. ('pos', c_int64),
  791. ('convergence_duration', c_int64))
  792. #AVPacket
  793. class AVCodec(ctypes.Structure): #avcodec.h
  794. _fields_ = (('name', c_char_p),
  795. ('long_name', c_char_p),
  796. ('type', c_int), #enum AVMediaType
  797. ('id', c_int), #enum AVCodecID
  798. ('capabilities;', c_int),
  799. ('supported_framerates', POINTER(AVRational)),
  800. ('pix_fmts', POINTER(c_int)),#enum AVPixelFormat
  801. ('supported_samplerates', POINTER(c_int)),
  802. ('sample_fmts', POINTER(c_int)),#enum AVSampleFormat
  803. ('channel_layouts', POINTER(c_uint64)),
  804. ('max_lowres', c_uint8),
  805. ('priv_class', POINTER(AVClass)),
  806. ('profiles', POINTER(AVProfile)),
  807. ('wrapper_name', c_char_p),
  808. ('priv_data_size', c_int),
  809. ('next', POINTER(AVCodec)),
  810. ('init_thread_copy', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext)))),
  811. ('update_thread_context', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),POINTER(AVCodecContext)))), #*dst, *src
  812. ('defaults', POINTER(AVCodecDefault)),
  813. ('init_static_data', POINTER(CFUNCTYPE(None,POINTER(AVCodec)))),
  814. ('init', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext)))),
  815. ('encode_sub', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),POINTER(c_uint8),c_int,POINTER(AVSubtitle)))),
  816. ('encode2', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),POINTER(AVPacket),POINTER(AVFrame),POINTER(c_int)))),
  817. ('decode', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),c_void_p,POINTER(c_int),POINTER(AVPacket)))),
  818. ('close', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext)))),
  819. ('send_frame', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),POINTER(AVFrame)))),
  820. ('receive_packet', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),POINTER(AVPacket)))),
  821. ('receive_frame', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),POINTER(AVFrame)))),
  822. ('flush', POINTER(CFUNCTYPE(None,POINTER(AVCodecContext)))),
  823. ('caps_internal', c_int),
  824. ('bsfs', c_char_p),
  825. ('hw_configs', POINTER(POINTER(AVCodecHWConfigInternal)))
  826. )
  827. #AVCodec
  828. class AVCodecContext(ctypes.Structure): #avcodec.h
  829. _fields_ = (('av_class', POINTER(AVClass)),
  830. ('log_level_offset', c_int),
  831. ('codec_type', c_int),#enum AVMediaType
  832. ('codec', POINTER(AVCodec)),
  833. ('codec_id', c_int), #enum AVCodecID
  834. ('codec_tag', c_uint),
  835. ('priv_data', c_void_p),
  836. ('internal', POINTER(AVCodecInternal)),
  837. ('opaque', c_void_p),
  838. ('bit_rate', c_int64),
  839. ('bit_rate_tolerance', c_int),
  840. ('global_quality', c_int),
  841. ('compression_level', c_int),
  842. ('flags', c_int),
  843. ('flags2', c_int),
  844. ('extradata', POINTER(c_uint8)),
  845. ('extradata_size', c_int),
  846. ('time_base', AVRational),
  847. ('ticks_per_frame', c_int),
  848. ('delay', c_int),
  849. ('width', c_int),
  850. ('height', c_int),
  851. ('coded_width', c_int),
  852. ('coded_height', c_int),
  853. ('gop_size', c_int),
  854. ('pix_fmt', c_int), #enum AVPixelFormat
  855. ('draw_horiz_band', POINTER(CFUNCTYPE(None,POINTER(AVCodecContext),POINTER(AVFrame),c_int*AV_NUM_DATA_POINTERS,c_int,c_int,c_int))),
  856. ('get_format', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),POINTER(c_int)))), #both c_int are enum AVPixelFormat
  857. ('max_b_frames', c_int),
  858. ('b_quant_factor', c_float),
  859. ('b_frame_strategy', c_int),
  860. ('b_quant_offset', c_float),
  861. ('has_b_frames', c_int),
  862. ('mpeg_quant', c_int),
  863. ('i_quant_factor', c_float),
  864. ('i_quant_offset', c_float),
  865. ('lumi_masking', c_float),
  866. ('temporal_cplx_masking', c_float),
  867. ('spatial_cplx_masking', c_float),
  868. ('p_masking', c_float),
  869. ('dark_masking', c_float),
  870. ('slice_count', c_int),
  871. ('prediction_method', c_int),
  872. ('slice_offset', POINTER(c_int)),
  873. ('sample_aspect_ratio', AVRational),
  874. ('me_cmp', c_int),
  875. ('me_sub_cmp', c_int),
  876. ('mb_cmp', c_int),
  877. ('ildct_cmp', c_int),
  878. ('dia_size', c_int),
  879. ('last_predictor_count', c_int),
  880. ('pre_me', c_int),
  881. ('me_pre_cmp', c_int),
  882. ('pre_dia_size', c_int),
  883. ('me_subpel_quality', c_int),
  884. ('me_range', c_int),
  885. ('slice_flags', c_int),
  886. ('mb_decision', c_int),
  887. ('intra_matrix', POINTER(c_uint16)),
  888. ('inter_matrix', POINTER(c_uint16)),
  889. ('scenechange_threshold', c_int),
  890. ('noise_reduction', c_int),
  891. ('intra_dc_precision', c_int),
  892. ('skip_top', c_int),
  893. ('skip_bottom', c_int),
  894. ('mb_lmin', c_int),
  895. ('mb_lmax', c_int),
  896. ('me_penalty_compensation', c_int),
  897. ('bidir_refine', c_int),
  898. ('brd_scale', c_int),
  899. ('keyint_min', c_int),
  900. ('refs', c_int),
  901. ('chromaoffset', c_int),
  902. ('mv0_threshold', c_int),
  903. ('b_sensitivity', c_int),
  904. ('color_primaries', c_int),#enum AVColorPrimaries
  905. ('color_trc', c_int),#enum AVColorTransferCharacteristic
  906. ('colorspace', c_int),#enum AVColorSpace
  907. ('color_range', c_int),#enum AVColorRange
  908. ('chroma_sample_location', c_int),#enum AVChromaLocation
  909. ('slices', c_int),
  910. ('field_order', c_int),#enum AVFieldOrder
  911. ('sample_rate', c_int),
  912. ('channels', c_int),
  913. ('sample_fmt', c_int),#enum AVSampleFormat
  914. ('frame_size', c_int),
  915. ('frame_number', c_int),
  916. ('block_align', c_int),
  917. ('cutoff', c_int),
  918. ('channel_layout', c_uint64),
  919. ('request_channel_layout', c_uint64),
  920. ('audio_service_type', c_int),#enum AVAudioServiceType
  921. ('request_sample_fmt', c_int),#enum AVSampleFormat
  922. ('get_buffer2', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),POINTER(AVFrame),c_int))),
  923. ('refcounted_frames', c_int),
  924. ('qcompress', c_float),
  925. ('qblur', c_float),
  926. ('qmin', c_int),
  927. ('qmax', c_int),
  928. ('max_qdiff', c_int),
  929. ('rc_buffer_size', c_int),
  930. ('rc_override_count', c_int),
  931. ('rc_override', POINTER(RcOverride)),
  932. ('rc_max_rate', c_int64),
  933. ('rc_min_rate', c_int64),
  934. ('rc_max_available_vbv_use', c_float),
  935. ('rc_min_vbv_overflow_use', c_float),
  936. ('rc_initial_buffer_occupancy', c_int),
  937. ('coder_type', c_int),
  938. ('context_model', c_int),
  939. ('frame_skip_threshold', c_int),
  940. ('frame_skip_factor', c_int),
  941. ('frame_skip_exp', c_int),
  942. ('frame_skip_cmp', c_int),
  943. ('trellis', c_int),
  944. ('min_prediction_order' ,c_int),
  945. ('max_prediction_order' ,c_int),
  946. ('timecode_frame_start' ,c_int64),
  947. ('rtp_callback',POINTER(CFUNCTYPE(None,POINTER(AVCodecContext),c_void_p,c_int,c_int))),
  948. ('rtp_payload_size', c_int),
  949. ('int mv_bits' , c_int),
  950. ('header_bits' , c_int),
  951. ('i_tex_bits' , c_int),
  952. ('p_tex_bits' , c_int),
  953. ('i_count' , c_int),
  954. ('p_count' , c_int),
  955. ('skip_count' , c_int),
  956. ('misc_bits' , c_int),
  957. ('frame_bits' , c_int),
  958. ('stats_out', c_char_p),
  959. ('stats_in', c_char_p),
  960. ('workaround_bugs', c_int),
  961. ('strict_std_compliance', c_int),
  962. ('error_concealment', c_int),
  963. ('debug', c_int),
  964. ('debug_mv', c_int),
  965. ('err_recognition', c_int),
  966. ('reordered_opaque', c_int64),
  967. ('hwaccel', POINTER(AVHWAccel)),
  968. ('hwaccel_context', c_void_p),
  969. ('error', c_uint64*AV_NUM_DATA_POINTERS),
  970. ('dct_algo', c_int),
  971. ('idct_algo', c_int),
  972. ('bits_per_coded_sample', c_int),
  973. ('bits_per_raw_sample', c_int),
  974. ('lowres', c_int),
  975. ('coded_frame', POINTER(AVFrame)),
  976. ('thread_count', c_int),
  977. ('thread_type', c_int),
  978. ('active_thread_type', c_int),
  979. ('thread_safe_callbacks', c_int),
  980. ('execute', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext), POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),c_void_p)) ,c_void_p,POINTER(c_int),c_int,c_int))),
  981. ('execute2', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext), POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),c_void_p,c_int,c_int)) ,c_void_p,POINTER(c_int),c_int))),
  982. ('nsse_weight', c_int),
  983. ('profile', c_int),
  984. ('level', c_int),
  985. ('skip_loop_filter', c_int),#enum AVDiscard
  986. ('skip_idct', c_int),#enum AVDiscard
  987. ('skip_frame', c_int),#enum AVDiscard
  988. ('subtitle_header', POINTER(c_uint8)),
  989. ('subtitle_header_size', c_int),
  990. ('vbv_delay', c_int64),
  991. ('side_data_only_packets', c_int),
  992. ('initial_padding', c_int),
  993. ('framerate', AVRational),
  994. ('sw_pix_fmt', c_int),#enum AVPixelFormat
  995. ('pkt_timebase', AVRational),
  996. ('codec_descriptor', POINTER(AVCodecDescriptor)),
  997. #('lowres', c_int),
  998. ('pts_correction_num_faulty_pts',c_int64),
  999. ('pts_correction_num_faulty_dts',c_int64),
  1000. ('pts_correction_last_pts' ,c_int64),
  1001. ('pts_correction_last_dts' ,c_int64),
  1002. ('sub_charenc', c_char_p),
  1003. ('sub_charenc_mode', c_int),
  1004. ('skip_alpha', c_int),
  1005. ('seek_preroll', c_int),
  1006. #('debug_mv', c_int),
  1007. ('chroma_intra_matrix', POINTER(c_uint16)),
  1008. ('dump_separator', POINTER(c_uint8)),
  1009. ('codec_whitelist', c_char_p),
  1010. ('properties', c_uint),
  1011. ('coded_side_data', POINTER(c_int)),#enum AVPacketSideData
  1012. ('nb_coded_side_data', c_int),
  1013. ('hw_frames_ctx', POINTER(AVBufferRef)),
  1014. ('sub_text_format', c_int),
  1015. ('trailing_padding', c_int),
  1016. ('max_pixels', c_int64),
  1017. ('hw_device_ctx', POINTER(AVBufferRef)),
  1018. ('hwaccel_flags', c_int),
  1019. ('apply_cropping', c_int),
  1020. ('extra_hw_frames', c_int)
  1021. )
  1022. #AVCodecContext
  1023. class AVHWAccel(ctypes.Structure): #avcodec.h
  1024. _fields_ = (('name', c_char_p),
  1025. ('type', c_int),#enum AVMediaType
  1026. ('id', c_int), #enum AVCodecID
  1027. ('pix_fmt', c_int), #enum AVPixelFormat
  1028. ('capabilities', c_int),
  1029. ('alloc_frame', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),POINTER(AVFrame)))),
  1030. ('start_frame', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),POINTER(c_uint8),c_uint32))),
  1031. ('decode_params', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),c_int,POINTER(c_uint8),c_uint32))),
  1032. ('decode_slice', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),POINTER(c_uint8),c_uint32))),
  1033. ('end_frame', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext)))),
  1034. ('frame_priv_data_size', c_int),
  1035. ('decode_mb', POINTER(CFUNCTYPE(None,POINTER(MpegEncContext)))),
  1036. ('init', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext)))),
  1037. ('uninit', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext)))),
  1038. ('priv_data_size', c_int),
  1039. ('caps_internal', c_int),
  1040. ('frame_params', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),POINTER(AVBufferRef))))
  1041. )
  1042. #AVHWAccel
  1043. class AVInputFormat(ctypes.Structure): #avformat.h
  1044. pass
  1045. class AVOutputFormat(ctypes.Structure): #avformat.h
  1046. pass
  1047. class AVStream(ctypes.Structure): #avformat.h
  1048. pass
  1049. class AVProgram(ctypes.Structure): #avformat.h
  1050. pass
  1051. class AVChapter(ctypes.Structure): #avformat.h
  1052. pass
  1053. class AVIOContext(ctypes.Structure): #avio.h
  1054. pass
  1055. class AVIOInterruptCB(ctypes.Structure): #avio.h
  1056. pass
  1057. class AVFormatInternal(ctypes.Structure):
  1058. pass
  1059. class AVFormatContext(ctypes.Structure): #avformat.h
  1060. pass
  1061. class AVPacketSideData(ctypes.Structure):
  1062. pass
  1063. class AVCodecParameters(ctypes.Structure): #avcodec.h
  1064. pass
  1065. class AVStreamInfo(ctypes.Structure):
  1066. pass
  1067. class AVPacketList(ctypes.Structure):
  1068. pass
  1069. class AVProbeData(ctypes.Structure):
  1070. pass
  1071. class AVIndexEntry(ctypes.Structure):
  1072. pass
  1073. class AVStreamInternal(ctypes.Structure):
  1074. pass
  1075.  
  1076. class AVIOInterruptCB(ctypes.Structure): #avio.h
  1077. _fields_ = [
  1078. ('callback', POINTER(CFUNCTYPE(POINTER(c_int),c_void_p))),
  1079. ('opaque', c_void_p)
  1080. ]
  1081. class AVCodecParameters(ctypes.Structure): #avcodec.h
  1082. _fields_ = [
  1083. ('codec_type', c_int), #enum AVMediaType
  1084. ('codec_id', c_int), #enum AVCodecID
  1085. ('codec_tag', c_uint32),
  1086. ('extradata', POINTER(c_uint8)),
  1087. ('extradata_size', c_int),
  1088. ('format', c_int),
  1089. ('bit_rate', c_int64),
  1090. ('bits_per_coded_sample', c_int),
  1091. ('bits_per_raw_sample', c_int),
  1092. ('profile', c_int),
  1093. ('level', c_int),
  1094. ('width', c_int),
  1095. ('height', c_int),
  1096. ('sample_aspect_ratio', AVRational),
  1097. ('field_order', c_int), #enum
  1098. ('color_range', c_int), #enum
  1099. ('color_primaries', c_int), #enum
  1100. ('color_trc', c_int), #enum
  1101. ('color_space', c_int), #enum
  1102. ('chroma_location', c_int), #enum
  1103. ('video_delay', c_int),
  1104. ('channel_layout', c_uint64),
  1105. ('channels', c_int),
  1106. ('sample_rate', c_int),
  1107. ('block_align', c_int),
  1108. ('frame_size', c_int),
  1109. ('initial_padding', c_int),
  1110. ('trailing_padding', c_int),
  1111. ('seek_preroll', c_int),
  1112. ]
  1113.  
  1114. av_format_control_message=POINTER(CFUNCTYPE(c_int,POINTER(AVFormatContext),c_int,c_void_p,c_size_t))
  1115. MAX_REORDER_DELAY=16
  1116. class AVStream(Structure):
  1117. _fields_ = [
  1118. ('index', c_int),
  1119. ('id', c_int),
  1120. ('codec', POINTER(AVCodecContext)),
  1121. ('priv_data', c_void_p),
  1122. #!('pts', AVFrac),
  1123. ('time_base', AVRational),
  1124. ('start_time', c_int64),
  1125. ('duration', c_int64),
  1126. ('nb_frames', c_int64),
  1127. ('disposition', c_int),
  1128. ('discard', c_int), #enum AVDiscard
  1129. ('sample_aspect_ratio', AVRational),
  1130. ('metadata', POINTER(AVDictionary)),
  1131. ('avg_frame_rate', AVRational),
  1132. ('attached_pic', AVPacket),
  1133. ('side_data', POINTER(AVPacketSideData)),
  1134. ('nb_side_data', c_int),
  1135. ('event_flags', c_int),
  1136. #!
  1137. ('r_frame_rate', AVRational),
  1138. ('recommended_encoder_configuration', c_char_p),
  1139. ('codecpar', POINTER(AVCodecParameters)),
  1140. ('info', POINTER(AVStreamInfo)),
  1141. ('pts_wrap_bits', c_int),
  1142. ('first_dts', c_int64),
  1143. ('cur_dts', c_int64),
  1144. ('last_IP_pts', c_int64),
  1145. ('last_IP_duration', c_int),
  1146. ('probe_packets', c_int),
  1147. ('codec_info_nb_frames', c_int),
  1148. ('need_parsing', c_int), #enum AVStreamParseType
  1149. ('parser', POINTER(AVCodecParserContext)),
  1150. ('last_in_packet_buffer', POINTER(AVPacketList)),
  1151. ('probe_data', AVProbeData),
  1152. ('pts_buffer', c_int64 * (MAX_REORDER_DELAY+1)),
  1153. ('index_entries', POINTER(AVIndexEntry)),
  1154. ('nb_index_entries', c_int),
  1155. ('index_entries_allocated_size', c_uint),
  1156. #!('r_frame_rate', AVRational),
  1157. ('stream_identifier', c_int),
  1158. ('program_num', c_int),
  1159. ('pmt_version', c_int),
  1160. ('pmt_stream_idx', c_int),
  1161. ('interleaver_chunk_size', c_int64),
  1162. ('interleaver_chunk_duration', c_int64),
  1163. ('request_probe', c_int),
  1164. ('skip_to_keyframe', c_int),
  1165. ('skip_samples', c_int),
  1166. ('start_skip_samples', c_int64),
  1167. ('first_discard_sample', c_int64),
  1168. ('last_discard_sample', c_int64),
  1169. ('nb_decoded_frames', c_int),
  1170. ('mux_ts_offset', c_int64),
  1171. ('pts_wrap_reference', c_int64),
  1172. ('pts_wrap_behavior', c_int),
  1173. ('update_initial_durations_done', c_int),
  1174. ('pts_reorder_error', c_int64 * (MAX_REORDER_DELAY+1)),
  1175. ('pts_reorder_error_count', c_uint8 * (MAX_REORDER_DELAY+1)),
  1176. ('last_dts_for_order_check', c_int64),
  1177. ('dts_ordered', c_uint8),
  1178. ('dts_misordered', c_uint8),
  1179. ('inject_global_side_data', c_int),
  1180. #!
  1181. ('display_aspect_ratio', AVRational),
  1182. #!('priv_pts', POINTER(FFFrac)),
  1183. ('internal', POINTER(AVStreamInternal)),
  1184. #!('codecpar', POINTER(AVCodecParameters)),
  1185. ]
  1186. class AVFormatContext(ctypes.Structure):
  1187. _fields_ = (
  1188. ('av_class' ,POINTER(AVClass)),
  1189. ('iformat' ,POINTER(AVInputFormat)),
  1190. ('oformat' ,POINTER(AVOutputFormat)),
  1191. ('priv_data' ,c_void_p),
  1192. ('pb' ,POINTER(AVIOContext)),
  1193. ('ctx_flags' ,c_int),
  1194. ('nb_streams' ,c_uint),
  1195. ('streams' ,POINTER(POINTER(AVStream))),
  1196. ('filename' ,c_byte*1024),
  1197. ('url' ,c_char_p),
  1198. ('start_time' ,c_int64),
  1199. ('duration' ,c_int64),
  1200. ('bit_rate' ,c_int64),
  1201. ('packet_size' ,c_uint),
  1202. ('max_delay' ,c_int),
  1203. ('flags' ,c_int),
  1204. ('probesize' ,c_int64),
  1205. ('max_analyze_duration' ,c_int64),
  1206. ('key' ,POINTER(c_uint8)),
  1207. ('keylen' ,c_int),
  1208. ('nb_programs' ,c_uint),
  1209. ('programs' ,POINTER(POINTER(AVProgram))),
  1210. ('video_codec_id' ,c_int), #enum AVCodecID
  1211. ('audio_codec_id' ,c_int), #enum AVCodecID
  1212. ('subtitle_codec_id' ,c_int), #enum AVCodecID
  1213. ('max_index_size' ,c_uint),
  1214. ('max_picture_buffer' ,c_uint),
  1215. ('nb_chapters' ,c_uint),
  1216. ('chapters' ,POINTER(POINTER(AVChapter))),
  1217. ('metadata' ,POINTER(AVDictionary)),
  1218. ('start_time_realtime' ,c_int64),
  1219. ('fps_probe_size' ,c_int),
  1220. ('error_recognition' ,c_int),
  1221. ('interrupt_callback' ,AVIOInterruptCB),
  1222. ('debug' ,c_int),
  1223. ('max_interleave_delta' ,c_int64),
  1224. ('strict_std_compliance' ,c_int),
  1225. ('event_flags' ,c_int),
  1226. ('max_ts_probe' ,c_int),
  1227. ('avoid_negative_ts' ,c_int),
  1228. ('ts_id' ,c_int),
  1229. ('audio_preload' ,c_int),
  1230. ('max_chunk_duration' ,c_int),
  1231. ('max_chunk_size' ,c_int),
  1232. ('use_wallclock_as_timestamps' ,c_int),
  1233. ('avio_flags' ,c_int),
  1234. ('duration_estimation_method' ,c_int), #enum AVDurationEstimationMethod
  1235. ('skip_initial_bytes' ,c_int64),
  1236. ('correct_ts_overflow' ,c_uint),
  1237. ('seek2any' ,c_int),
  1238. ('flush_packets' ,c_int),
  1239. ('probe_score' ,c_int),
  1240. ('format_probesize' ,c_int),
  1241. ('codec_whitelist' ,c_char_p),
  1242. ('format_whitelist' ,c_char_p),
  1243. ('internal' ,POINTER(AVFormatInternal)),
  1244. ('io_repositioned' ,c_int),
  1245. ('video_codec' ,POINTER(AVCodec)),
  1246. ('audio_codec' ,POINTER(AVCodec)),
  1247. ('subtitle_codec' ,POINTER(AVCodec)),
  1248. ('data_codec' ,POINTER(AVCodec)),
  1249. ('metadata_header_padding' ,c_int),
  1250. ('opaque' ,c_void_p),
  1251. ('control_message_cb' ,av_format_control_message), #typedef was function pointer. but here is not
  1252. ('output_ts_offset' ,c_int64),
  1253. ('dump_separator' ,c_uint8),
  1254. ('data_codec_id' ,c_int), #enum AVCodecID
  1255. ('open_cb' ,POINTER(CFUNCTYPE(c_int,POINTER(AVFormatContext),POINTER(POINTER(AVIOContext)),c_char_p,c_int,POINTER(AVIOInterruptCB),POINTER(POINTER(AVDictionary))))),
  1256. ('protocol_whitelist' ,c_char_p),
  1257. ('io_open' ,POINTER(CFUNCTYPE(c_int,POINTER(AVFormatContext),POINTER(POINTER(AVIOContext)),c_char_p,c_int,POINTER(POINTER(AVDictionary))))),
  1258. ('io_close' ,POINTER(CFUNCTYPE(None,POINTER(AVFormatContext),POINTER(AVIOContext)))),
  1259. ('protocol_blacklist' ,c_char_p),
  1260. ('max_streams' ,c_int),
  1261. ('skip_estimate_duration_from_pts',c_int))
  1262.  
  1263. AV_NOPTS_VALUE=c_int64(0x8000000000000000) #((int64_t)UINT64_C(0x8000000000000000))
  1264.  
  1265. '''
  1266. '''
  1267.  
  1268. from ctypes import *
  1269. import os
  1270. import sys
  1271.  
  1272. os.environ['PATH']='C:\\sw\\ffmpeg-20180702-3c4af57-win64-shared\\bin' #location of avcodec-58.dll
  1273. avcodec=WinDLL('avcodec-58.dll')
  1274. avutil=WinDLL('avutil-56.dll')
  1275. avformat=WinDLL('avformat-58.dll')
  1276. class FFmpegAVFormatContext(Structure):
  1277. _fields_ = [
  1278. ('context', POINTER(AVFormatContext))
  1279. ]
  1280. AVMEDIA_TYPE_VIDEO = 0
  1281. def h264_test(): #api-h264-test.c
  1282. fmt_ctx =FFmpegAVFormatContext() #ctx=POINTER(AVFormatContext) is not working
  1283.  
  1284. avformat.avformat_open_input.argtypes=[POINTER(POINTER(AVFormatContext)),c_char_p,POINTER(AVInputFormat),POINTER(POINTER(AVDictionary))]
  1285. avformat.avformat_open_input.restype=c_int
  1286. ret=avformat.avformat_open_input(byref(fmt_ctx.context),b"F:\\myfile\\idlogo.mp4",None,None)
  1287. #ret=avformat.avformat_open_input(byref(fmt_ctx.context),b"F:\\myfile\\intro.010.png",None,None)
  1288.  
  1289. avformat.avformat_find_stream_info.argtypes=[POINTER(AVFormatContext),POINTER(POINTER(AVDictionary))]
  1290. avformat.avformat_find_stream_info.restype=c_int
  1291. ret=avformat.avformat_find_stream_info(fmt_ctx.context, None)
  1292.  
  1293. avformat.av_find_best_stream.argtypes=[POINTER(AVFormatContext),c_int,c_int,c_int,POINTER(POINTER(AVCodec)),c_int]
  1294. avformat.av_find_best_stream.restype=c_int
  1295. video_stream=avformat.av_find_best_stream(fmt_ctx.context,AVMEDIA_TYPE_VIDEO, -1, -1, None, 0)
  1296.  
  1297. origin_par = fmt_ctx .context[0].streams[video_stream][0].codecpar
  1298.  
  1299. avcodec.avcodec_find_decoder.argtypes=[c_int]
  1300. avcodec.avcodec_find_decoder.restype=POINTER(AVCodec)
  1301. codec = avcodec.avcodec_find_decoder(origin_par[0].codec_id)
  1302.  
  1303. avcodec.avcodec_alloc_context3.argtypes=[POINTER(AVCodec)]
  1304. avcodec.avcodec_alloc_context3.restype=POINTER(AVCodecContext)
  1305. ctx=avcodec.avcodec_alloc_context3(codec)
  1306.  
  1307. avcodec.avcodec_parameters_to_context.argtypes=[POINTER(AVCodecContext),POINTER(AVCodecParameters)]
  1308. avcodec.avcodec_parameters_to_context.restype=c_int
  1309. ret=avcodec.avcodec_parameters_to_context(ctx,origin_par)
  1310.  
  1311. avcodec.avcodec_open2.argtypes=[POINTER(AVCodecContext),POINTER(AVCodec),POINTER(POINTER(AVDictionary))]
  1312. avcodec.avcodec_open2.restype=c_int
  1313. ret=avcodec.avcodec_open2(ctx,codec,None)
  1314.  
  1315. avutil.av_frame_alloc.restype=POINTER(AVFrame)
  1316. fr=avutil.av_frame_alloc()
  1317.  
  1318. avutil.av_image_get_buffer_size.argtypes=[c_int,c_int,c_int,c_int]
  1319. avutil.av_image_get_buffer_size.restype=c_int
  1320. byte_buffer_size=avutil.av_image_get_buffer_size(ctx[0].pix_fmt,ctx[0].width,ctx[0].height,16)
  1321.  
  1322. avutil.av_malloc.argtypes=[c_int]
  1323. avutil.av_malloc.restype=c_void_p#POINTER(c_ubyte)
  1324. byte_buffer=avutil.av_malloc(byte_buffer_size)
  1325.  
  1326. print('video',video_stream, fmt_ctx.context[0].streams[video_stream][0].time_base.num, fmt_ctx.context[0].streams[video_stream][0].time_base.den)
  1327.  
  1328. pkt=AVPacket()
  1329. avcodec.av_init_packet.argtypes=[POINTER(AVPacket)]
  1330. avcodec.av_init_packet.restype=None
  1331. avcodec.av_init_packet(byref(pkt))
  1332.  
  1333. avcodec.av_packet_unref.argtypes=[POINTER(AVPacket)]
  1334. avcodec.av_packet_unref.restype=None
  1335.  
  1336. end_of_stream=0
  1337. got_frame=0
  1338. i=0
  1339. avformat.av_read_frame.argtypes=[POINTER(AVFormatContext),POINTER(AVPacket)]
  1340. avformat.av_read_frame.restype=c_int
  1341.  
  1342. avcodec.avcodec_decode_video2.argtypes=[POINTER(AVCodecContext),POINTER(AVFrame),POINTER(c_int),POINTER(AVPacket)]
  1343. avcodec.avcodec_decode_video2.restype=c_int
  1344.  
  1345. avutil.av_adler32_update.argtypes=[c_ulong,POINTER(c_uint8),c_int]
  1346. avutil.av_adler32_update.restype=c_ulong
  1347.  
  1348. avutil.av_image_copy_to_buffer.argtypes=[POINTER(c_uint8),c_int,
  1349. POINTER(c_uint8)*4,c_int*4,
  1350. c_int,c_int,c_int,c_int]
  1351. avutil.av_image_copy_to_buffer.restype=c_int
  1352.  
  1353. while True: #do..while is do not appear in python
  1354. if(not end_of_stream):
  1355. if(avformat.av_read_frame(fmt_ctx.context, byref(pkt)) < 0):
  1356. end_of_stream=1
  1357. if(end_of_stream):
  1358. pkt.data=None
  1359. pkt.size=0
  1360. if ((pkt.stream_index == video_stream) or end_of_stream):
  1361. got_frame=0
  1362. if(pkt.pts==AV_NOPTS_VALUE):
  1363. pkt.pts=pkt.dts=i
  1364. got_frame_c=c_int()
  1365. ret=avcodec.avcodec_decode_video2(ctx,fr,byref(got_frame_c),byref(pkt))
  1366. got_frame=got_frame_c.value
  1367. if(ret<0):
  1368. print("avcodec_decode_video2",ret)
  1369. return
  1370. if(got_frame):
  1371.  
  1372. c_uint8_p=POINTER(c_uint8)
  1373. byte_buffer_uint8_p=cast(byte_buffer,c_uint8_p)
  1374.  
  1375. fr_data=(POINTER(c_uint8)*4)()
  1376. fr_data[0]=fr[0].data[0]
  1377. fr_data[1]=fr[0].data[1]
  1378. fr_data[2]=fr[0].data[2]
  1379. fr_data[3]=fr[0].data[3]
  1380.  
  1381. fr_linesize=(c_int*4)()
  1382. fr_linesize[0]=fr[0].linesize[0]
  1383. fr_linesize[1]=fr[0].linesize[1]
  1384. fr_linesize[2]=fr[0].linesize[2]
  1385. fr_linesize[3]=fr[0].linesize[3]
  1386.  
  1387. number_of_written_bytes=avutil.av_image_copy_to_buffer(byte_buffer_uint8_p,byte_buffer_size,
  1388. fr_data, fr_linesize,
  1389. ctx[0].pix_fmt,ctx[0].width,ctx[0].height,1)
  1390. if(number_of_written_bytes<0):
  1391. print("av_image_copy_to_buffer")
  1392. return
  1393. print(video_stream,
  1394. fr[0].pts, fr[0].pkt_dts, fr[0].pkt_duration,
  1395. number_of_written_bytes, hex(avutil.av_adler32_update(0, byte_buffer_uint8_p, number_of_written_bytes)))
  1396. avcodec.av_packet_unref(byref(pkt))
  1397. avcodec.av_init_packet(byref(pkt))
  1398. i+=1
  1399.  
  1400. if(not (not end_of_stream or got_frame)):break
  1401.  
  1402. avcodec.av_packet_unref(byref(pkt))
  1403. avutil.av_frame_free.argtypes=[POINTER(POINTER(AVFrame))]
  1404. avutil.av_frame_free(byref(fr))
  1405. avcodec.avcodec_close.argtypes=[POINTER(AVCodecContext)]
  1406. avcodec.avcodec_close.restype=c_int
  1407. avcodec.avcodec_close(ctx)
  1408. avformat.avformat_close_input.argtypes=[POINTER(POINTER(AVFormatContext))]
  1409. avformat.avformat_close_input(byref(fmt_ctx.context))
  1410. avcodec.avcodec_free_context.argtypes=[POINTER(POINTER(AVCodecContext))]
  1411. avcodec.avcodec_free_context(byref(ctx))
  1412. avutil.av_freep.argtypes=[c_void_p]
  1413. avutil.av_freep(byref(byte_buffer_uint8_p))
  1414.  
  1415.  
  1416. '''
  1417. run main
  1418. '''
  1419.  
  1420. if __name__=='__main__':
  1421. h264_test()from enum import Enum, auto
  1422. class AVCodecID(Enum):
  1423. AV_CODEC_ID_NONE =0
  1424.  
  1425. # video codecs */
  1426. AV_CODEC_ID_MPEG1VIDEO =auto()
  1427. AV_CODEC_ID_MPEG2VIDEO =auto() #/< preferred ID for MPEG-1/2 video decoding
  1428. AV_CODEC_ID_H261 =auto()
  1429. AV_CODEC_ID_H263 =auto()
  1430. AV_CODEC_ID_RV10 =auto()
  1431. AV_CODEC_ID_RV20 =auto()
  1432. AV_CODEC_ID_MJPEG =auto()
  1433. AV_CODEC_ID_MJPEGB =auto()
  1434. AV_CODEC_ID_LJPEG =auto()
  1435. AV_CODEC_ID_SP5X =auto()
  1436. AV_CODEC_ID_JPEGLS =auto()
  1437. AV_CODEC_ID_MPEG4 =auto()
  1438. AV_CODEC_ID_RAWVIDEO =auto()
  1439. AV_CODEC_ID_MSMPEG4V1 =auto()
  1440. AV_CODEC_ID_MSMPEG4V2 =auto()
  1441. AV_CODEC_ID_MSMPEG4V3 =auto()
  1442. AV_CODEC_ID_WMV1 =auto()
  1443. AV_CODEC_ID_WMV2 =auto()
  1444. AV_CODEC_ID_H263P =auto()
  1445. AV_CODEC_ID_H263I =auto()
  1446. AV_CODEC_ID_FLV1 =auto()
  1447. AV_CODEC_ID_SVQ1 =auto()
  1448. AV_CODEC_ID_SVQ3 =auto()
  1449. AV_CODEC_ID_DVVIDEO =auto()
  1450. AV_CODEC_ID_HUFFYUV =auto()
  1451. AV_CODEC_ID_CYUV =auto()
  1452. AV_CODEC_ID_H264 =auto()
  1453. AV_CODEC_ID_INDEO3 =auto()
  1454. AV_CODEC_ID_VP3 =auto()
  1455. AV_CODEC_ID_THEORA =auto()
  1456. AV_CODEC_ID_ASV1 =auto()
  1457. AV_CODEC_ID_ASV2 =auto()
  1458. AV_CODEC_ID_FFV1 =auto()
  1459. AV_CODEC_ID_4XM =auto()
  1460. AV_CODEC_ID_VCR1 =auto()
  1461. AV_CODEC_ID_CLJR =auto()
  1462. AV_CODEC_ID_MDEC =auto()
  1463. AV_CODEC_ID_ROQ =auto()
  1464. AV_CODEC_ID_INTERPLAY_VIDEO =auto()
  1465. AV_CODEC_ID_XAN_WC3 =auto()
  1466. AV_CODEC_ID_XAN_WC4 =auto()
  1467. AV_CODEC_ID_RPZA =auto()
  1468. AV_CODEC_ID_CINEPAK =auto()
  1469. AV_CODEC_ID_WS_VQA =auto()
  1470. AV_CODEC_ID_MSRLE =auto()
  1471. AV_CODEC_ID_MSVIDEO1 =auto()
  1472. AV_CODEC_ID_IDCIN =auto()
  1473. AV_CODEC_ID_8BPS =auto()
  1474. AV_CODEC_ID_SMC =auto()
  1475. AV_CODEC_ID_FLIC =auto()
  1476. AV_CODEC_ID_TRUEMOTION1 =auto()
  1477. AV_CODEC_ID_VMDVIDEO =auto()
  1478. AV_CODEC_ID_MSZH =auto()
  1479. AV_CODEC_ID_ZLIB =auto()
  1480. AV_CODEC_ID_QTRLE =auto()
  1481. AV_CODEC_ID_TSCC =auto()
  1482. AV_CODEC_ID_ULTI =auto()
  1483. AV_CODEC_ID_QDRAW =auto()
  1484. AV_CODEC_ID_VIXL =auto()
  1485. AV_CODEC_ID_QPEG =auto()
  1486. AV_CODEC_ID_PNG =auto()
  1487. AV_CODEC_ID_PPM =auto()
  1488. AV_CODEC_ID_PBM =auto()
  1489. AV_CODEC_ID_PGM =auto()
  1490. AV_CODEC_ID_PGMYUV =auto()
  1491. AV_CODEC_ID_PAM =auto()
  1492. AV_CODEC_ID_FFVHUFF =auto()
  1493. AV_CODEC_ID_RV30 =auto()
  1494. AV_CODEC_ID_RV40 =auto()
  1495. AV_CODEC_ID_VC1 =auto()
  1496. AV_CODEC_ID_WMV3 =auto()
  1497. AV_CODEC_ID_LOCO =auto()
  1498. AV_CODEC_ID_WNV1 =auto()
  1499. AV_CODEC_ID_AASC =auto()
  1500. AV_CODEC_ID_INDEO2 =auto()
  1501. AV_CODEC_ID_FRAPS =auto()
  1502. AV_CODEC_ID_TRUEMOTION2 =auto()
  1503. AV_CODEC_ID_BMP =auto()
  1504. AV_CODEC_ID_CSCD =auto()
  1505. AV_CODEC_ID_MMVIDEO =auto()
  1506. AV_CODEC_ID_ZMBV =auto()
  1507. AV_CODEC_ID_AVS =auto()
  1508. AV_CODEC_ID_SMACKVIDEO =auto()
  1509. AV_CODEC_ID_NUV =auto()
  1510. AV_CODEC_ID_KMVC =auto()
  1511. AV_CODEC_ID_FLASHSV =auto()
  1512. AV_CODEC_ID_CAVS =auto()
  1513. AV_CODEC_ID_JPEG2000 =auto()
  1514. AV_CODEC_ID_VMNC =auto()
  1515. AV_CODEC_ID_VP5 =auto()
  1516. AV_CODEC_ID_VP6 =auto()
  1517. AV_CODEC_ID_VP6F =auto()
  1518. AV_CODEC_ID_TARGA =auto()
  1519. AV_CODEC_ID_DSICINVIDEO =auto()
  1520. AV_CODEC_ID_TIERTEXSEQVIDEO =auto()
  1521. AV_CODEC_ID_TIFF =auto()
  1522. AV_CODEC_ID_GIF =auto()
  1523. AV_CODEC_ID_DXA =auto()
  1524. AV_CODEC_ID_DNXHD =auto()
  1525. AV_CODEC_ID_THP =auto()
  1526. AV_CODEC_ID_SGI =auto()
  1527. AV_CODEC_ID_C93 =auto()
  1528. AV_CODEC_ID_BETHSOFTVID =auto()
  1529. AV_CODEC_ID_PTX =auto()
  1530. AV_CODEC_ID_TXD =auto()
  1531. AV_CODEC_ID_VP6A =auto()
  1532. AV_CODEC_ID_AMV =auto()
  1533. AV_CODEC_ID_VB =auto()
  1534. AV_CODEC_ID_PCX =auto()
  1535. AV_CODEC_ID_SUNRAST =auto()
  1536. AV_CODEC_ID_INDEO4 =auto()
  1537. AV_CODEC_ID_INDEO5 =auto()
  1538. AV_CODEC_ID_MIMIC =auto()
  1539. AV_CODEC_ID_RL2 =auto()
  1540. AV_CODEC_ID_ESCAPE124 =auto()
  1541. AV_CODEC_ID_DIRAC =auto()
  1542. AV_CODEC_ID_BFI =auto()
  1543. AV_CODEC_ID_CMV =auto()
  1544. AV_CODEC_ID_MOTIONPIXELS =auto()
  1545. AV_CODEC_ID_TGV =auto()
  1546. AV_CODEC_ID_TGQ =auto()
  1547. AV_CODEC_ID_TQI =auto()
  1548. AV_CODEC_ID_AURA =auto()
  1549. AV_CODEC_ID_AURA2 =auto()
  1550. AV_CODEC_ID_V210X =auto()
  1551. AV_CODEC_ID_TMV =auto()
  1552. AV_CODEC_ID_V210 =auto()
  1553. AV_CODEC_ID_DPX =auto()
  1554. AV_CODEC_ID_MAD =auto()
  1555. AV_CODEC_ID_FRWU =auto()
  1556. AV_CODEC_ID_FLASHSV2 =auto()
  1557. AV_CODEC_ID_CDGRAPHICS =auto()
  1558. AV_CODEC_ID_R210 =auto()
  1559. AV_CODEC_ID_ANM =auto()
  1560. AV_CODEC_ID_BINKVIDEO =auto()
  1561. AV_CODEC_ID_IFF_ILBM =auto()
  1562. #define AV_CODEC_ID_IFF_BYTERUN1 AV_CODEC_ID_IFF_ILBM
  1563. AV_CODEC_ID_KGV1 =auto()
  1564. AV_CODEC_ID_YOP =auto()
  1565. AV_CODEC_ID_VP8 =auto()
  1566. AV_CODEC_ID_PICTOR =auto()
  1567. AV_CODEC_ID_ANSI =auto()
  1568. AV_CODEC_ID_A64_MULTI =auto()
  1569. AV_CODEC_ID_A64_MULTI5 =auto()
  1570. AV_CODEC_ID_R10K =auto()
  1571. AV_CODEC_ID_MXPEG =auto()
  1572. AV_CODEC_ID_LAGARITH =auto()
  1573. AV_CODEC_ID_PRORES =auto()
  1574. AV_CODEC_ID_JV =auto()
  1575. AV_CODEC_ID_DFA =auto()
  1576. AV_CODEC_ID_WMV3IMAGE =auto()
  1577. AV_CODEC_ID_VC1IMAGE =auto()
  1578. AV_CODEC_ID_UTVIDEO =auto()
  1579. AV_CODEC_ID_BMV_VIDEO =auto()
  1580. AV_CODEC_ID_VBLE =auto()
  1581. AV_CODEC_ID_DXTORY =auto()
  1582. AV_CODEC_ID_V410 =auto()
  1583. AV_CODEC_ID_XWD =auto()
  1584. AV_CODEC_ID_CDXL =auto()
  1585. AV_CODEC_ID_XBM =auto()
  1586. AV_CODEC_ID_ZEROCODEC =auto()
  1587. AV_CODEC_ID_MSS1 =auto()
  1588. AV_CODEC_ID_MSA1 =auto()
  1589. AV_CODEC_ID_TSCC2 =auto()
  1590. AV_CODEC_ID_MTS2 =auto()
  1591. AV_CODEC_ID_CLLC =auto()
  1592. AV_CODEC_ID_MSS2 =auto()
  1593. AV_CODEC_ID_VP9 =auto()
  1594. AV_CODEC_ID_AIC =auto()
  1595. AV_CODEC_ID_ESCAPE130 =auto()
  1596. AV_CODEC_ID_G2M =auto()
  1597. AV_CODEC_ID_WEBP =auto()
  1598. AV_CODEC_ID_HNM4_VIDEO =auto()
  1599. AV_CODEC_ID_HEVC =auto()
  1600. #define AV_CODEC_ID_H265 AV_CODEC_ID_HEVC
  1601. AV_CODEC_ID_FIC =auto()
  1602. AV_CODEC_ID_ALIAS_PIX =auto()
  1603. AV_CODEC_ID_BRENDER_PIX =auto()
  1604. AV_CODEC_ID_PAF_VIDEO =auto()
  1605. AV_CODEC_ID_EXR =auto()
  1606. AV_CODEC_ID_VP7 =auto()
  1607. AV_CODEC_ID_SANM =auto()
  1608. AV_CODEC_ID_SGIRLE =auto()
  1609. AV_CODEC_ID_MVC1 =auto()
  1610. AV_CODEC_ID_MVC2 =auto()
  1611. AV_CODEC_ID_HQX =auto()
  1612. AV_CODEC_ID_TDSC =auto()
  1613. AV_CODEC_ID_HQ_HQA =auto()
  1614. AV_CODEC_ID_HAP =auto()
  1615. AV_CODEC_ID_DDS =auto()
  1616. AV_CODEC_ID_DXV =auto()
  1617. AV_CODEC_ID_SCREENPRESSO =auto()
  1618. AV_CODEC_ID_RSCC =auto()
  1619.  
  1620. AV_CODEC_ID_Y41P = 0x8000
  1621. AV_CODEC_ID_AVRP =auto()
  1622. AV_CODEC_ID_012V =auto()
  1623. AV_CODEC_ID_AVUI =auto()
  1624. AV_CODEC_ID_AYUV =auto()
  1625. AV_CODEC_ID_TARGA_Y216 =auto()
  1626. AV_CODEC_ID_V308 =auto()
  1627. AV_CODEC_ID_V408 =auto()
  1628. AV_CODEC_ID_YUV4 =auto()
  1629. AV_CODEC_ID_AVRN =auto()
  1630. AV_CODEC_ID_CPIA =auto()
  1631. AV_CODEC_ID_XFACE =auto()
  1632. AV_CODEC_ID_SNOW =auto()
  1633. AV_CODEC_ID_SMVJPEG =auto()
  1634. AV_CODEC_ID_APNG =auto()
  1635. AV_CODEC_ID_DAALA =auto()
  1636. AV_CODEC_ID_CFHD =auto()
  1637. AV_CODEC_ID_TRUEMOTION2RT =auto()
  1638. AV_CODEC_ID_M101 =auto()
  1639. AV_CODEC_ID_MAGICYUV =auto()
  1640. AV_CODEC_ID_SHEERVIDEO =auto()
  1641. AV_CODEC_ID_YLC =auto()
  1642. AV_CODEC_ID_PSD =auto()
  1643. AV_CODEC_ID_PIXLET =auto()
  1644. AV_CODEC_ID_SPEEDHQ =auto()
  1645. AV_CODEC_ID_FMVC =auto()
  1646. AV_CODEC_ID_SCPR =auto()
  1647. AV_CODEC_ID_CLEARVIDEO =auto()
  1648. AV_CODEC_ID_XPM =auto()
  1649. AV_CODEC_ID_AV1 =auto()
  1650. AV_CODEC_ID_BITPACKED =auto()
  1651. AV_CODEC_ID_MSCC =auto()
  1652. AV_CODEC_ID_SRGC =auto()
  1653. AV_CODEC_ID_SVG =auto()
  1654. AV_CODEC_ID_GDV =auto()
  1655. AV_CODEC_ID_FITS =auto()
  1656.  
  1657. # various PCM "codecs" */
  1658. AV_CODEC_ID_FIRST_AUDIO = 0x10000 #/< A dummy id pointing at the start of audio codecs
  1659. AV_CODEC_ID_PCM_S16LE = 0x10000
  1660. AV_CODEC_ID_PCM_S16BE =auto()
  1661. AV_CODEC_ID_PCM_U16LE =auto()
  1662. AV_CODEC_ID_PCM_U16BE =auto()
  1663. AV_CODEC_ID_PCM_S8 =auto()
  1664. AV_CODEC_ID_PCM_U8 =auto()
  1665. AV_CODEC_ID_PCM_MULAW =auto()
  1666. AV_CODEC_ID_PCM_ALAW =auto()
  1667. AV_CODEC_ID_PCM_S32LE =auto()
  1668. AV_CODEC_ID_PCM_S32BE =auto()
  1669. AV_CODEC_ID_PCM_U32LE =auto()
  1670. AV_CODEC_ID_PCM_U32BE =auto()
  1671. AV_CODEC_ID_PCM_S24LE =auto()
  1672. AV_CODEC_ID_PCM_S24BE =auto()
  1673. AV_CODEC_ID_PCM_U24LE =auto()
  1674. AV_CODEC_ID_PCM_U24BE =auto()
  1675. AV_CODEC_ID_PCM_S24DAUD =auto()
  1676. AV_CODEC_ID_PCM_ZORK =auto()
  1677. AV_CODEC_ID_PCM_S16LE_PLANAR =auto()
  1678. AV_CODEC_ID_PCM_DVD =auto()
  1679. AV_CODEC_ID_PCM_F32BE =auto()
  1680. AV_CODEC_ID_PCM_F32LE =auto()
  1681. AV_CODEC_ID_PCM_F64BE =auto()
  1682. AV_CODEC_ID_PCM_F64LE =auto()
  1683. AV_CODEC_ID_PCM_BLURAY =auto()
  1684. AV_CODEC_ID_PCM_LXF =auto()
  1685. AV_CODEC_ID_S302M =auto()
  1686. AV_CODEC_ID_PCM_S8_PLANAR =auto()
  1687. AV_CODEC_ID_PCM_S24LE_PLANAR =auto()
  1688. AV_CODEC_ID_PCM_S32LE_PLANAR =auto()
  1689. AV_CODEC_ID_PCM_S16BE_PLANAR =auto()
  1690.  
  1691. AV_CODEC_ID_PCM_S64LE = 0x10800
  1692. AV_CODEC_ID_PCM_S64BE =auto()
  1693. AV_CODEC_ID_PCM_F16LE =auto()
  1694. AV_CODEC_ID_PCM_F24LE =auto()
  1695.  
  1696. # various ADPCM codecs */
  1697. AV_CODEC_ID_ADPCM_IMA_QT = 0x11000
  1698. AV_CODEC_ID_ADPCM_IMA_WAV =auto()
  1699. AV_CODEC_ID_ADPCM_IMA_DK3 =auto()
  1700. AV_CODEC_ID_ADPCM_IMA_DK4 =auto()
  1701. AV_CODEC_ID_ADPCM_IMA_WS =auto()
  1702. AV_CODEC_ID_ADPCM_IMA_SMJPEG =auto()
  1703. AV_CODEC_ID_ADPCM_MS =auto()
  1704. AV_CODEC_ID_ADPCM_4XM =auto()
  1705. AV_CODEC_ID_ADPCM_XA =auto()
  1706. AV_CODEC_ID_ADPCM_ADX =auto()
  1707. AV_CODEC_ID_ADPCM_EA =auto()
  1708. AV_CODEC_ID_ADPCM_G726 =auto()
  1709. AV_CODEC_ID_ADPCM_CT =auto()
  1710. AV_CODEC_ID_ADPCM_SWF =auto()
  1711. AV_CODEC_ID_ADPCM_YAMAHA =auto()
  1712. AV_CODEC_ID_ADPCM_SBPRO_4 =auto()
  1713. AV_CODEC_ID_ADPCM_SBPRO_3 =auto()
  1714. AV_CODEC_ID_ADPCM_SBPRO_2 =auto()
  1715. AV_CODEC_ID_ADPCM_THP =auto()
  1716. AV_CODEC_ID_ADPCM_IMA_AMV =auto()
  1717. AV_CODEC_ID_ADPCM_EA_R1 =auto()
  1718. AV_CODEC_ID_ADPCM_EA_R3 =auto()
  1719. AV_CODEC_ID_ADPCM_EA_R2 =auto()
  1720. AV_CODEC_ID_ADPCM_IMA_EA_SEAD =auto()
  1721. AV_CODEC_ID_ADPCM_IMA_EA_EACS =auto()
  1722. AV_CODEC_ID_ADPCM_EA_XAS =auto()
  1723. AV_CODEC_ID_ADPCM_EA_MAXIS_XA =auto()
  1724. AV_CODEC_ID_ADPCM_IMA_ISS =auto()
  1725. AV_CODEC_ID_ADPCM_G722 =auto()
  1726. AV_CODEC_ID_ADPCM_IMA_APC =auto()
  1727. AV_CODEC_ID_ADPCM_VIMA =auto()
  1728.  
  1729. AV_CODEC_ID_ADPCM_AFC = 0x11800
  1730. AV_CODEC_ID_ADPCM_IMA_OKI =auto()
  1731. AV_CODEC_ID_ADPCM_DTK =auto()
  1732. AV_CODEC_ID_ADPCM_IMA_RAD =auto()
  1733. AV_CODEC_ID_ADPCM_G726LE =auto()
  1734. AV_CODEC_ID_ADPCM_THP_LE =auto()
  1735. AV_CODEC_ID_ADPCM_PSX =auto()
  1736. AV_CODEC_ID_ADPCM_AICA =auto()
  1737. AV_CODEC_ID_ADPCM_IMA_DAT4 =auto()
  1738. AV_CODEC_ID_ADPCM_MTAF =auto()
  1739.  
  1740. # AMR */
  1741. AV_CODEC_ID_AMR_NB = 0x12000
  1742. AV_CODEC_ID_AMR_WB =auto()
  1743.  
  1744. # RealAudio codecs*/
  1745. AV_CODEC_ID_RA_144 = 0x13000
  1746. AV_CODEC_ID_RA_288 =auto()
  1747.  
  1748. # various DPCM codecs */
  1749. AV_CODEC_ID_ROQ_DPCM = 0x14000
  1750. AV_CODEC_ID_INTERPLAY_DPCM =auto()
  1751. AV_CODEC_ID_XAN_DPCM =auto()
  1752. AV_CODEC_ID_SOL_DPCM =auto()
  1753.  
  1754. AV_CODEC_ID_SDX2_DPCM = 0x14800
  1755. AV_CODEC_ID_GREMLIN_DPCM =auto()
  1756.  
  1757. # audio codecs */
  1758. AV_CODEC_ID_MP2 = 0x15000
  1759. AV_CODEC_ID_MP3 =auto() #/< preferred ID for decoding MPEG audio layer 1, 2 or 3
  1760. AV_CODEC_ID_AAC =auto()
  1761. AV_CODEC_ID_AC3 =auto()
  1762. AV_CODEC_ID_DTS =auto()
  1763. AV_CODEC_ID_VORBIS =auto()
  1764. AV_CODEC_ID_DVAUDIO =auto()
  1765. AV_CODEC_ID_WMAV1 =auto()
  1766. AV_CODEC_ID_WMAV2 =auto()
  1767. AV_CODEC_ID_MACE3 =auto()
  1768. AV_CODEC_ID_MACE6 =auto()
  1769. AV_CODEC_ID_VMDAUDIO =auto()
  1770. AV_CODEC_ID_FLAC =auto()
  1771. AV_CODEC_ID_MP3ADU =auto()
  1772. AV_CODEC_ID_MP3ON4 =auto()
  1773. AV_CODEC_ID_SHORTEN =auto()
  1774. AV_CODEC_ID_ALAC =auto()
  1775. AV_CODEC_ID_WESTWOOD_SND1 =auto()
  1776. AV_CODEC_ID_GSM =auto() #/< as in Berlin toast format
  1777. AV_CODEC_ID_QDM2 =auto()
  1778. AV_CODEC_ID_COOK =auto()
  1779. AV_CODEC_ID_TRUESPEECH =auto()
  1780. AV_CODEC_ID_TTA =auto()
  1781. AV_CODEC_ID_SMACKAUDIO =auto()
  1782. AV_CODEC_ID_QCELP =auto()
  1783. AV_CODEC_ID_WAVPACK =auto()
  1784. AV_CODEC_ID_DSICINAUDIO =auto()
  1785. AV_CODEC_ID_IMC =auto()
  1786. AV_CODEC_ID_MUSEPACK7 =auto()
  1787. AV_CODEC_ID_MLP =auto()
  1788. AV_CODEC_ID_GSM_MS =auto() # as found in WAV */
  1789. AV_CODEC_ID_ATRAC3 =auto()
  1790. AV_CODEC_ID_APE =auto()
  1791. AV_CODEC_ID_NELLYMOSER =auto()
  1792. AV_CODEC_ID_MUSEPACK8 =auto()
  1793. AV_CODEC_ID_SPEEX =auto()
  1794. AV_CODEC_ID_WMAVOICE =auto()
  1795. AV_CODEC_ID_WMAPRO =auto()
  1796. AV_CODEC_ID_WMALOSSLESS =auto()
  1797. AV_CODEC_ID_ATRAC3P =auto()
  1798. AV_CODEC_ID_EAC3 =auto()
  1799. AV_CODEC_ID_SIPR =auto()
  1800. AV_CODEC_ID_MP1 =auto()
  1801. AV_CODEC_ID_TWINVQ =auto()
  1802. AV_CODEC_ID_TRUEHD =auto()
  1803. AV_CODEC_ID_MP4ALS =auto()
  1804. AV_CODEC_ID_ATRAC1 =auto()
  1805. AV_CODEC_ID_BINKAUDIO_RDFT =auto()
  1806. AV_CODEC_ID_BINKAUDIO_DCT =auto()
  1807. AV_CODEC_ID_AAC_LATM =auto()
  1808. AV_CODEC_ID_QDMC =auto()
  1809. AV_CODEC_ID_CELT =auto()
  1810. AV_CODEC_ID_G723_1 =auto()
  1811. AV_CODEC_ID_G729 =auto()
  1812. AV_CODEC_ID_8SVX_EXP =auto()
  1813. AV_CODEC_ID_8SVX_FIB =auto()
  1814. AV_CODEC_ID_BMV_AUDIO =auto()
  1815. AV_CODEC_ID_RALF =auto()
  1816. AV_CODEC_ID_IAC =auto()
  1817. AV_CODEC_ID_ILBC =auto()
  1818. AV_CODEC_ID_OPUS =auto()
  1819. AV_CODEC_ID_COMFORT_NOISE =auto()
  1820. AV_CODEC_ID_TAK =auto()
  1821. AV_CODEC_ID_METASOUND =auto()
  1822. AV_CODEC_ID_PAF_AUDIO =auto()
  1823. AV_CODEC_ID_ON2AVC =auto()
  1824. AV_CODEC_ID_DSS_SP =auto()
  1825. AV_CODEC_ID_CODEC2 =auto()
  1826.  
  1827. AV_CODEC_ID_FFWAVESYNTH = 0x15800
  1828. AV_CODEC_ID_SONIC =auto()
  1829. AV_CODEC_ID_SONIC_LS =auto()
  1830. AV_CODEC_ID_EVRC =auto()
  1831. AV_CODEC_ID_SMV =auto()
  1832. AV_CODEC_ID_DSD_LSBF =auto()
  1833. AV_CODEC_ID_DSD_MSBF =auto()
  1834. AV_CODEC_ID_DSD_LSBF_PLANAR =auto()
  1835. AV_CODEC_ID_DSD_MSBF_PLANAR =auto()
  1836. AV_CODEC_ID_4GV =auto()
  1837. AV_CODEC_ID_INTERPLAY_ACM =auto()
  1838. AV_CODEC_ID_XMA1 =auto()
  1839. AV_CODEC_ID_XMA2 =auto()
  1840. AV_CODEC_ID_DST =auto()
  1841. AV_CODEC_ID_ATRAC3AL =auto()
  1842. AV_CODEC_ID_ATRAC3PAL =auto()
  1843. AV_CODEC_ID_DOLBY_E =auto()
  1844. AV_CODEC_ID_APTX =auto()
  1845. AV_CODEC_ID_APTX_HD =auto()
  1846. AV_CODEC_ID_SBC =auto()
  1847.  
  1848. # subtitle codecs */
  1849. AV_CODEC_ID_FIRST_SUBTITLE = 0x17000 #/< A dummy ID pointing at the start of subtitle codecs.
  1850. AV_CODEC_ID_DVD_SUBTITLE = 0x17000
  1851. AV_CODEC_ID_DVB_SUBTITLE =auto()
  1852. AV_CODEC_ID_TEXT =auto() #/< raw UTF-8 text
  1853. AV_CODEC_ID_XSUB =auto()
  1854. AV_CODEC_ID_SSA =auto()
  1855. AV_CODEC_ID_MOV_TEXT =auto()
  1856. AV_CODEC_ID_HDMV_PGS_SUBTITLE =auto()
  1857. AV_CODEC_ID_DVB_TELETEXT =auto()
  1858. AV_CODEC_ID_SRT =auto()
  1859.  
  1860. AV_CODEC_ID_MICRODVD = 0x17800
  1861. AV_CODEC_ID_EIA_608 =auto()
  1862. AV_CODEC_ID_JACOSUB =auto()
  1863. AV_CODEC_ID_SAMI =auto()
  1864. AV_CODEC_ID_REALTEXT =auto()
  1865. AV_CODEC_ID_STL =auto()
  1866. AV_CODEC_ID_SUBVIEWER1 =auto()
  1867. AV_CODEC_ID_SUBVIEWER =auto()
  1868. AV_CODEC_ID_SUBRIP =auto()
  1869. AV_CODEC_ID_WEBVTT =auto()
  1870. AV_CODEC_ID_MPL2 =auto()
  1871. AV_CODEC_ID_VPLAYER =auto()
  1872. AV_CODEC_ID_PJS =auto()
  1873. AV_CODEC_ID_ASS =auto()
  1874. AV_CODEC_ID_HDMV_TEXT_SUBTITLE =auto()
  1875. AV_CODEC_ID_TTML =auto()
  1876.  
  1877. # other specific kind of codecs (generally used for attachments) */
  1878. AV_CODEC_ID_FIRST_UNKNOWN = 0x18000 #/< A dummy ID pointing at the start of various fake codecs.
  1879. AV_CODEC_ID_TTF = 0x18000
  1880.  
  1881. AV_CODEC_ID_SCTE_35 =auto() #/< Contain timestamp estimated through PCR of program stream.
  1882. AV_CODEC_ID_BINTEXT = 0x18800
  1883. AV_CODEC_ID_XBIN =auto()
  1884. AV_CODEC_ID_IDF =auto()
  1885. AV_CODEC_ID_OTF =auto()
  1886. AV_CODEC_ID_SMPTE_KLV =auto()
  1887. AV_CODEC_ID_DVD_NAV =auto()
  1888. AV_CODEC_ID_TIMED_ID3 =auto()
  1889. AV_CODEC_ID_BIN_DATA =auto()
  1890.  
  1891.  
  1892. AV_CODEC_ID_PROBE = 0x19000 #/< codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it
  1893.  
  1894. AV_CODEC_ID_MPEG2TS = 0x20000 #*< _FAKE_ codec to indicate a raw MPEG-2 TS
  1895. #* stream (only used by libavformat) */
  1896. AV_CODEC_ID_MPEG4SYSTEMS = 0x20001 #*< _FAKE_ codec to indicate a MPEG-4 Systems
  1897. #* stream (only used by libavformat) */
  1898. AV_CODEC_ID_FFMETADATA = 0x21000 #/< Dummy codec for streams containing only metadata information.
  1899. AV_CODEC_ID_WRAPPED_AVFRAME = 0x21001 #/< Passthrough codec, AVFrames wrapped in AVPacket
  1900. '''
  1901. '''
  1902.  
  1903. import ctypes
  1904. from ctypes import *
  1905. from ctypes.wintypes import *
  1906. ULONG_PTR = ctypes.POINTER(DWORD)
  1907. class AVProfile(ctypes.Structure):#avcodec.h
  1908. pass
  1909. class AVProfile(ctypes.Structure):#avcodec.h
  1910. _fields_ = (('profile', c_int),
  1911. ('name', c_char_p)
  1912. )
  1913. #AVProfile
  1914. class AVRational(ctypes.Structure): #rational.h
  1915. pass
  1916. class AVClass(ctypes.Structure): #log.h
  1917. pass
  1918. class AVCodecDescriptor(ctypes.Structure): #avcodec.h
  1919. _fields_ = (('id', c_int), #enum AVCodecID
  1920. ('type', c_int), #enum AVMediaType
  1921. ('name', c_char_p),
  1922. ('long_name', c_char_p),
  1923. ('props', c_int),
  1924. ('mime_types', POINTER(c_char_p)),
  1925. ('profiles', POINTER(AVProfile)))
  1926. #AVCodecDescriptor
  1927. class RcOverride(ctypes.Structure): #avcodec.h
  1928. pass
  1929. class RcOverride(ctypes.Structure): #avcodec.h
  1930. _fields_ = (('start_frame', c_int),
  1931. ('end_frame', c_int),
  1932. ('qscale', c_int),
  1933. ('quality_factor', c_float)
  1934. )
  1935. #RcOverride
  1936. class MpegEncContext(ctypes.Structure): #avcodec.h
  1937. pass
  1938. class AVBufferRef(ctypes.Structure): #buffer.h
  1939. pass
  1940. class AVHWAccel(ctypes.Structure): #avcodec.h
  1941. pass
  1942. class AVCodecDefault(ctypes.Structure):
  1943. pass
  1944. class AVSubtitle(ctypes.Structure): #avcodec.h
  1945. pass
  1946. class AVPacket(ctypes.Structure): #avcodec.h
  1947. pass
  1948. class AVFrame(ctypes.Structure): #frame.h
  1949. pass
  1950. class AVCodecHWConfigInternal(ctypes.Structure):
  1951. pass
  1952. class AVCodec(ctypes.Structure): #avcodec.h
  1953. pass
  1954. class AVCodecContext(ctypes.Structure): #avcodec.h
  1955. pass
  1956. class AVCodecInternal(ctypes.Structure):
  1957. pass
  1958. class AVFrameSideData(ctypes.Structure): #frame.h
  1959. pass
  1960. class AVOptionRange(ctypes.Structure): #opt.h
  1961. pass
  1962. class AVOptionRanges(ctypes.Structure): #opt.h
  1963. pass
  1964. class AVDictionary(ctypes.Structure): #dict.h
  1965. pass
  1966. class AVBuffer(ctypes.Structure): #dict.h
  1967. pass
  1968. class AVCodecParserContext(ctypes.Structure): #avcodec.h
  1969. pass
  1970. class AVCodecParser(ctypes.Structure): #avcodec.h
  1971. pass
  1972.  
  1973. class AVCodecParser(ctypes.Structure): #avcodec.h
  1974. _fields_=(('codec_ids',c_int*5),
  1975. ('priv_data_size',c_int),
  1976. ('parser_init',POINTER(CFUNCTYPE(c_int,POINTER(AVCodecParserContext)))),
  1977. ('parser_parse',POINTER(CFUNCTYPE(c_int,POINTER(AVCodecParserContext),
  1978. POINTER(AVCodecContext),
  1979. POINTER(POINTER(c_uint8)),POINTER(c_int),
  1980. POINTER(c_uint8),c_int))),
  1981. ('parser_close',POINTER(CFUNCTYPE(None,POINTER(AVCodecParserContext)))),
  1982. ('split',POINTER(CFUNCTYPE(c_int,POINTER(AVCodecParserContext),POINTER(c_uint8),c_int))),
  1983. ('next',POINTER(AVCodecParser)))
  1984. #AVCodecParser
  1985.  
  1986. AV_PARSER_PTS_NB=4 #avcodec.h
  1987. class AVCodecParserContext(ctypes.Structure): #avcodec.h
  1988. _fields_=(('priv_data',c_void_p),
  1989. ('parser',POINTER(AVCodecParser)),
  1990. ('frame_offset',c_int64),
  1991. ('cur_offset',c_int64),
  1992. ('next_frame_offset',c_int64),
  1993. ('pict_type',c_int),
  1994. ('repeat_pict',c_int),
  1995. ('pts',c_int64),
  1996. ('dts',c_int64),
  1997. ('last_pts',c_int64),
  1998. ('last_dts',c_int64),
  1999. ('fetch_timestamp',c_int),
  2000. ('cur_frame_start_index',c_int),
  2001. ('cur_frame_offset',c_int64*AV_PARSER_PTS_NB),
  2002. ('cur_frame_pts',c_int64*AV_PARSER_PTS_NB),
  2003. ('cur_frame_dts',c_int64*AV_PARSER_PTS_NB),
  2004. ('flags',c_int),
  2005. ('offset',c_int64),
  2006. ('cur_frame_end',c_int64*AV_PARSER_PTS_NB),
  2007. ('key_frame',c_int),
  2008. ('convergence_duration',c_int64),
  2009. ('dts_sync_point',c_int),
  2010. ('dts_ref_dts_delta',c_int),
  2011. ('pts_dts_delta',c_int),
  2012. ('cur_frame_pos',c_int64*AV_PARSER_PTS_NB),
  2013. ('pos',c_int64),
  2014. ('last_pos',c_int64),
  2015. ('duration',c_int),
  2016. ('field_order',c_int), #enum AVFieldOrder
  2017. ('picture_structure',c_int), #enum AVPictureStructure
  2018. ('output_picture_number',c_int),
  2019. ('width',c_int),
  2020. ('height',c_int),
  2021. ('coded_width',c_int),
  2022. ('coded_height',c_int),
  2023. ('format',c_int))
  2024. #AVCodecParserContext
  2025.  
  2026. class MpegEncContext(ctypes.Structure): #mpegvideo.h
  2027. _fields_=()
  2028. #MpegEncContext
  2029. class AVRational(ctypes.Structure): #rational.h
  2030. _fields_=(('num',c_int),
  2031. ('den',c_int))
  2032. #AVRational
  2033. intptr_t=c_long
  2034. atomic_uint=intptr_t
  2035. class AVBuffer(ctypes.Structure): #dict.h
  2036. _fields_=(('data',POINTER(c_uint8)),
  2037. ('size',c_int),
  2038. ('refcount',atomic_uint),
  2039. ('free',POINTER(CFUNCTYPE(None,c_void_p,POINTER(c_uint8)))),
  2040. ('opaque',c_void_p),
  2041. ('flags',c_int))
  2042. #AVBuffer
  2043. class AVBufferRef(ctypes.Structure): #buffer.h
  2044. _fields_ = (('buffer',POINTER(AVBuffer)),
  2045. ('data',POINTER(c_uint8)),
  2046. ('size',c_int))
  2047. #AVBufferRef
  2048. class AVCodecHWConfig(ctypes.Structure):
  2049. _fields_=(('pix_fmt',c_int), #enum AVPixelFormat
  2050. ('methods',c_int),
  2051. ('device_type',c_int)) #enum AVHWDeviceType
  2052. #AVCodecHWConfig
  2053. class AVCodecHWConfigInternal(ctypes.Structure):
  2054. _fields_=(('public',AVCodecHWConfig),
  2055. ('hwaccel',POINTER(AVHWAccel)))
  2056. #AVCodecHWConfigInternal
  2057. class AVDictionaryEntry(ctypes.Structure):
  2058. _fields_=(('key',c_char_p),
  2059. ('value', c_char_p))
  2060. #AVDictionaryEntry
  2061. class AVDictionary(ctypes.Structure): #dict.h
  2062. _fields_=(('count',c_int),
  2063. ('elems', POINTER(AVDictionaryEntry)))
  2064. #AVDictionary
  2065. class AVOptionRange(ctypes.Structure): #opt.h
  2066. _fields_ = (('str',c_char_p),
  2067. ('value_min', c_double),
  2068. ('value_max', c_double),
  2069. ('component_min', c_double),
  2070. ('component_max', c_double),
  2071. ('is_range', c_int))
  2072. #AVOptionRange
  2073. class AVOptionRanges(ctypes.Structure): #opt.h
  2074. _fields_ = (('range',POINTER(POINTER(AVOptionRange))),
  2075. ('nb_ranges', c_int),
  2076. ('nb_components', c_int))
  2077. #AVOptionRanges
  2078. AV_NUM_DATA_POINTERS=8 #frame.h
  2079. AV_INPUT_BUFFER_PADDING_SIZE=64 #avcodec.h
  2080. class _default_val_union(ctypes.Union):
  2081. _fields_ = (('i64', c_int64),
  2082. ('dbl', c_double),
  2083. ('str', c_char_p),
  2084. ('q', AVRational))
  2085.  
  2086. class AVOption(ctypes.Structure): #opt.h
  2087. _fields_ = (('name', c_char_p),
  2088. ('help', c_char_p),
  2089. ('offset', c_int),
  2090. ('type', c_int),#enum AVOptionType
  2091. ('default_val', _default_val_union),
  2092. ('min', c_double),
  2093. ('max', c_double),
  2094. ('flags', c_int),
  2095. ('unit', c_char_p))
  2096. #AVOption
  2097. class AVClass(ctypes.Structure): #log.h
  2098. _fields_ = (('class_name', c_char_p),
  2099. ('item_name', POINTER(CFUNCTYPE(c_char_p,c_void_p))),
  2100. ('option', POINTER(AVOption)),
  2101. ('version', c_int),
  2102. ('log_level_offset_offset', c_int),
  2103. ('parent_log_context_offset', c_int),
  2104. ('child_next', POINTER(CFUNCTYPE(c_void_p,c_void_p,c_void_p))),
  2105. ('child_class_next', POINTER(CFUNCTYPE(POINTER(AVClass),POINTER(AVClass)))),
  2106. ('category', c_int),#enum AVClassCategory
  2107. ('get_category', POINTER(CFUNCTYPE(c_int,c_void_p))), #enum AVClassCategory
  2108. ('query_ranges', POINTER(CFUNCTYPE(c_int,POINTER(POINTER(AVOptionRanges)),c_void_p,c_char_p,c_int))))
  2109. #AVClass
  2110. class AVFrameSideData(ctypes.Structure): #frame.h
  2111. _fields_ = (('type', c_int), #enum AVFrameSideDataType
  2112. ('data', POINTER(c_uint8)),
  2113. ('size', c_int),
  2114. ('metadata', POINTER(AVDictionary)),
  2115. ('buf', POINTER(AVBufferRef)))
  2116. #AVFrameSideData
  2117. class AVFrame(ctypes.Structure): #frame.h
  2118. _fields_ = (('data',POINTER(c_uint8)*AV_NUM_DATA_POINTERS), #uint8_t *data[AV_NUM_DATA_POINTERS];
  2119. ('linesize',c_int*AV_NUM_DATA_POINTERS),
  2120. ('extended_data',POINTER(POINTER(c_uint8))),
  2121. ('width', c_int),
  2122. ('height', c_int),
  2123. ('nb_samples', c_int),
  2124. ('format', c_int),
  2125. ('key_frame', c_int),
  2126. ('pict_type', c_int), #enum AVPictureType
  2127. ('sample_aspect_ratio', AVRational),
  2128. ('pts', c_int64),
  2129. ('pkt_pts', c_int64),
  2130. ('pkt_dts', c_int64),
  2131. ('coded_picture_number', c_int),
  2132. ('display_picture_number', c_int),
  2133. ('quality', c_int),
  2134. ('opaque', c_void_p),
  2135. ('error', c_uint64*AV_NUM_DATA_POINTERS),
  2136. ('repeat_pict', c_int),
  2137. ('interlaced_frame', c_int),
  2138. ('top_field_first', c_int),
  2139. ('palette_has_changed', c_int),
  2140. ('reordered_opaque', c_int64),
  2141. ('sample_rate', c_int),
  2142. ('channel_layout', c_uint64),
  2143. ('buf', POINTER(AVBufferRef)*AV_NUM_DATA_POINTERS), #AVBufferRef *buf[AV_NUM_DATA_POINTERS];
  2144. ('extended_buf', POINTER(POINTER(AVBufferRef))),
  2145. ('nb_extended_buf', c_int),
  2146. ('side_data', POINTER(POINTER(AVFrameSideData))),
  2147. ('nb_side_data', c_int),
  2148. ('flags', c_int),
  2149. ('color_range', c_int), #enum AVColorRange
  2150. ('color_primaries', c_int), #enum AVColorPrimaries
  2151. ('color_trc', c_int), #enum AVColorTransferCharacteristic
  2152. ('colorspace', c_int), #enum AVColorSpace
  2153. ('chroma_location', c_int), #enum AVChromaLocation
  2154. ('best_effort_timestamp', c_int64),
  2155. ('pkt_pos', c_int64),
  2156. ('pkt_duration', c_int64),
  2157. ('metadata', POINTER(AVDictionary)),
  2158. ('decode_error_flags', c_int),
  2159. ('channels', c_int),
  2160. ('pkt_size', c_int),
  2161. ('qscale_table', POINTER(c_int8)),
  2162. ('qstride', c_int),
  2163. ('qscale_type', c_int),
  2164. ('qp_table_buf', POINTER(AVBufferRef)),
  2165. ('hw_frames_ctx', POINTER(AVBufferRef)),
  2166. ('opaque_ref', POINTER(AVBufferRef)),
  2167. ('crop_top' ,c_size_t),
  2168. ('crop_bottom',c_size_t),
  2169. ('crop_left' ,c_size_t),
  2170. ('crop_right' ,c_size_t),
  2171. ('private_ref', POINTER(AVBufferRef)))
  2172. #AVFrame
  2173. class AVPicture(ctypes.Structure): #avcodec.h
  2174. _fields_ = (('data' ,POINTER(c_uint8)*AV_NUM_DATA_POINTERS),
  2175. ('linesize' ,c_uint8*AV_NUM_DATA_POINTERS))
  2176. #AVPicture
  2177. class AVSubtitleRect(ctypes.Structure): #avcodec.h
  2178. _fields_ = (('x' ,c_int),
  2179. ('y' ,c_int),
  2180. ('w' ,c_int),
  2181. ('h' ,c_int),
  2182. ('nb_colors',AVPicture),
  2183. ('pict',c_int),
  2184. ('data',POINTER(c_uint)*4),
  2185. ('linesize',(c_int*4)),
  2186. ('type', c_int), #enum AVSubtitleType
  2187. ('text', c_char_p),
  2188. ('ass', c_char_p),
  2189. ('flags', c_int))
  2190. #AVSubtitle
  2191. class AVSubtitle(ctypes.Structure): #avcodec.h
  2192. _fields_ = (('format', c_uint16),
  2193. ('start_display_time', c_uint32),
  2194. ('end_display_time', c_uint32),
  2195. ('num_rects', c_uint),
  2196. ('rects', POINTER(POINTER(AVSubtitleRect))),
  2197. ('pts', c_int64))
  2198. #AVSubtitle
  2199. class AVPacket(ctypes.Structure): #avcodec.h
  2200. _fields_ = (('buf', POINTER(AVBufferRef)),
  2201. ('pts', c_int64),
  2202. ('dts', c_int64),
  2203. ('data', POINTER(c_uint8)),
  2204. ('size', c_int),
  2205. ('stream_index', c_int),
  2206. ('flags', c_int),
  2207. ('side_data', POINTER(c_int)), #enum AVPacketSideData
  2208. ('side_data_elems', c_int),
  2209. ('duration', c_int64),
  2210. ('pos', c_int64),
  2211. ('convergence_duration', c_int64))
  2212. #AVPacket
  2213. class AVCodec(ctypes.Structure): #avcodec.h
  2214. _fields_ = (('name', c_char_p),
  2215. ('long_name', c_char_p),
  2216. ('type', c_int), #enum AVMediaType
  2217. ('id', c_int), #enum AVCodecID
  2218. ('capabilities;', c_int),
  2219. ('supported_framerates', POINTER(AVRational)),
  2220. ('pix_fmts', POINTER(c_int)),#enum AVPixelFormat
  2221. ('supported_samplerates', POINTER(c_int)),
  2222. ('sample_fmts', POINTER(c_int)),#enum AVSampleFormat
  2223. ('channel_layouts', POINTER(c_uint64)),
  2224. ('max_lowres', c_uint8),
  2225. ('priv_class', POINTER(AVClass)),
  2226. ('profiles', POINTER(AVProfile)),
  2227. ('wrapper_name', c_char_p),
  2228. ('priv_data_size', c_int),
  2229. ('next', POINTER(AVCodec)),
  2230. ('init_thread_copy', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext)))),
  2231. ('update_thread_context', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),POINTER(AVCodecContext)))), #*dst, *src
  2232. ('defaults', POINTER(AVCodecDefault)),
  2233. ('init_static_data', POINTER(CFUNCTYPE(None,POINTER(AVCodec)))),
  2234. ('init', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext)))),
  2235. ('encode_sub', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),POINTER(c_uint8),c_int,POINTER(AVSubtitle)))),
  2236. ('encode2', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),POINTER(AVPacket),POINTER(AVFrame),POINTER(c_int)))),
  2237. ('decode', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),c_void_p,POINTER(c_int),POINTER(AVPacket)))),
  2238. ('close', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext)))),
  2239. ('send_frame', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),POINTER(AVFrame)))),
  2240. ('receive_packet', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),POINTER(AVPacket)))),
  2241. ('receive_frame', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),POINTER(AVFrame)))),
  2242. ('flush', POINTER(CFUNCTYPE(None,POINTER(AVCodecContext)))),
  2243. ('caps_internal', c_int),
  2244. ('bsfs', c_char_p),
  2245. ('hw_configs', POINTER(POINTER(AVCodecHWConfigInternal)))
  2246. )
  2247. #AVCodec
  2248. class AVCodecContext(ctypes.Structure): #avcodec.h
  2249. _fields_ = (('av_class', POINTER(AVClass)),
  2250. ('log_level_offset', c_int),
  2251. ('codec_type', c_int),#enum AVMediaType
  2252. ('codec', POINTER(AVCodec)),
  2253. ('codec_id', c_int), #enum AVCodecID
  2254. ('codec_tag', c_uint),
  2255. ('priv_data', c_void_p),
  2256. ('internal', POINTER(AVCodecInternal)),
  2257. ('opaque', c_void_p),
  2258. ('bit_rate', c_int64),
  2259. ('bit_rate_tolerance', c_int),
  2260. ('global_quality', c_int),
  2261. ('compression_level', c_int),
  2262. ('flags', c_int),
  2263. ('flags2', c_int),
  2264. ('extradata', POINTER(c_uint8)),
  2265. ('extradata_size', c_int),
  2266. ('time_base', AVRational),
  2267. ('ticks_per_frame', c_int),
  2268. ('delay', c_int),
  2269. ('width', c_int),
  2270. ('height', c_int),
  2271. ('coded_width', c_int),
  2272. ('coded_height', c_int),
  2273. ('gop_size', c_int),
  2274. ('pix_fmt', c_int), #enum AVPixelFormat
  2275. ('draw_horiz_band', POINTER(CFUNCTYPE(None,POINTER(AVCodecContext),POINTER(AVFrame),c_int*AV_NUM_DATA_POINTERS,c_int,c_int,c_int))),
  2276. ('get_format', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),POINTER(c_int)))), #both c_int are enum AVPixelFormat
  2277. ('max_b_frames', c_int),
  2278. ('b_quant_factor', c_float),
  2279. ('b_frame_strategy', c_int),
  2280. ('b_quant_offset', c_float),
  2281. ('has_b_frames', c_int),
  2282. ('mpeg_quant', c_int),
  2283. ('i_quant_factor', c_float),
  2284. ('i_quant_offset', c_float),
  2285. ('lumi_masking', c_float),
  2286. ('temporal_cplx_masking', c_float),
  2287. ('spatial_cplx_masking', c_float),
  2288. ('p_masking', c_float),
  2289. ('dark_masking', c_float),
  2290. ('slice_count', c_int),
  2291. ('prediction_method', c_int),
  2292. ('slice_offset', POINTER(c_int)),
  2293. ('sample_aspect_ratio', AVRational),
  2294. ('me_cmp', c_int),
  2295. ('me_sub_cmp', c_int),
  2296. ('mb_cmp', c_int),
  2297. ('ildct_cmp', c_int),
  2298. ('dia_size', c_int),
  2299. ('last_predictor_count', c_int),
  2300. ('pre_me', c_int),
  2301. ('me_pre_cmp', c_int),
  2302. ('pre_dia_size', c_int),
  2303. ('me_subpel_quality', c_int),
  2304. ('me_range', c_int),
  2305. ('slice_flags', c_int),
  2306. ('mb_decision', c_int),
  2307. ('intra_matrix', POINTER(c_uint16)),
  2308. ('inter_matrix', POINTER(c_uint16)),
  2309. ('scenechange_threshold', c_int),
  2310. ('noise_reduction', c_int),
  2311. ('intra_dc_precision', c_int),
  2312. ('skip_top', c_int),
  2313. ('skip_bottom', c_int),
  2314. ('mb_lmin', c_int),
  2315. ('mb_lmax', c_int),
  2316. ('me_penalty_compensation', c_int),
  2317. ('bidir_refine', c_int),
  2318. ('brd_scale', c_int),
  2319. ('keyint_min', c_int),
  2320. ('refs', c_int),
  2321. ('chromaoffset', c_int),
  2322. ('mv0_threshold', c_int),
  2323. ('b_sensitivity', c_int),
  2324. ('color_primaries', c_int),#enum AVColorPrimaries
  2325. ('color_trc', c_int),#enum AVColorTransferCharacteristic
  2326. ('colorspace', c_int),#enum AVColorSpace
  2327. ('color_range', c_int),#enum AVColorRange
  2328. ('chroma_sample_location', c_int),#enum AVChromaLocation
  2329. ('slices', c_int),
  2330. ('field_order', c_int),#enum AVFieldOrder
  2331. ('sample_rate', c_int),
  2332. ('channels', c_int),
  2333. ('sample_fmt', c_int),#enum AVSampleFormat
  2334. ('frame_size', c_int),
  2335. ('frame_number', c_int),
  2336. ('block_align', c_int),
  2337. ('cutoff', c_int),
  2338. ('channel_layout', c_uint64),
  2339. ('request_channel_layout', c_uint64),
  2340. ('audio_service_type', c_int),#enum AVAudioServiceType
  2341. ('request_sample_fmt', c_int),#enum AVSampleFormat
  2342. ('get_buffer2', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),POINTER(AVFrame),c_int))),
  2343. ('refcounted_frames', c_int),
  2344. ('qcompress', c_float),
  2345. ('qblur', c_float),
  2346. ('qmin', c_int),
  2347. ('qmax', c_int),
  2348. ('max_qdiff', c_int),
  2349. ('rc_buffer_size', c_int),
  2350. ('rc_override_count', c_int),
  2351. ('rc_override', POINTER(RcOverride)),
  2352. ('rc_max_rate', c_int64),
  2353. ('rc_min_rate', c_int64),
  2354. ('rc_max_available_vbv_use', c_float),
  2355. ('rc_min_vbv_overflow_use', c_float),
  2356. ('rc_initial_buffer_occupancy', c_int),
  2357. ('coder_type', c_int),
  2358. ('context_model', c_int),
  2359. ('frame_skip_threshold', c_int),
  2360. ('frame_skip_factor', c_int),
  2361. ('frame_skip_exp', c_int),
  2362. ('frame_skip_cmp', c_int),
  2363. ('trellis', c_int),
  2364. ('min_prediction_order' ,c_int),
  2365. ('max_prediction_order' ,c_int),
  2366. ('timecode_frame_start' ,c_int64),
  2367. ('rtp_callback',POINTER(CFUNCTYPE(None,POINTER(AVCodecContext),c_void_p,c_int,c_int))),
  2368. ('rtp_payload_size', c_int),
  2369. ('int mv_bits' , c_int),
  2370. ('header_bits' , c_int),
  2371. ('i_tex_bits' , c_int),
  2372. ('p_tex_bits' , c_int),
  2373. ('i_count' , c_int),
  2374. ('p_count' , c_int),
  2375. ('skip_count' , c_int),
  2376. ('misc_bits' , c_int),
  2377. ('frame_bits' , c_int),
  2378. ('stats_out', c_char_p),
  2379. ('stats_in', c_char_p),
  2380. ('workaround_bugs', c_int),
  2381. ('strict_std_compliance', c_int),
  2382. ('error_concealment', c_int),
  2383. ('debug', c_int),
  2384. ('debug_mv', c_int),
  2385. ('err_recognition', c_int),
  2386. ('reordered_opaque', c_int64),
  2387. ('hwaccel', POINTER(AVHWAccel)),
  2388. ('hwaccel_context', c_void_p),
  2389. ('error', c_uint64*AV_NUM_DATA_POINTERS),
  2390. ('dct_algo', c_int),
  2391. ('idct_algo', c_int),
  2392. ('bits_per_coded_sample', c_int),
  2393. ('bits_per_raw_sample', c_int),
  2394. ('lowres', c_int),
  2395. ('coded_frame', POINTER(AVFrame)),
  2396. ('thread_count', c_int),
  2397. ('thread_type', c_int),
  2398. ('active_thread_type', c_int),
  2399. ('thread_safe_callbacks', c_int),
  2400. ('execute', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext), POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),c_void_p)) ,c_void_p,POINTER(c_int),c_int,c_int))),
  2401. ('execute2', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext), POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),c_void_p,c_int,c_int)) ,c_void_p,POINTER(c_int),c_int))),
  2402. ('nsse_weight', c_int),
  2403. ('profile', c_int),
  2404. ('level', c_int),
  2405. ('skip_loop_filter', c_int),#enum AVDiscard
  2406. ('skip_idct', c_int),#enum AVDiscard
  2407. ('skip_frame', c_int),#enum AVDiscard
  2408. ('subtitle_header', POINTER(c_uint8)),
  2409. ('subtitle_header_size', c_int),
  2410. ('vbv_delay', c_int64),
  2411. ('side_data_only_packets', c_int),
  2412. ('initial_padding', c_int),
  2413. ('framerate', AVRational),
  2414. ('sw_pix_fmt', c_int),#enum AVPixelFormat
  2415. ('pkt_timebase', AVRational),
  2416. ('codec_descriptor', POINTER(AVCodecDescriptor)),
  2417. #('lowres', c_int),
  2418. ('pts_correction_num_faulty_pts',c_int64),
  2419. ('pts_correction_num_faulty_dts',c_int64),
  2420. ('pts_correction_last_pts' ,c_int64),
  2421. ('pts_correction_last_dts' ,c_int64),
  2422. ('sub_charenc', c_char_p),
  2423. ('sub_charenc_mode', c_int),
  2424. ('skip_alpha', c_int),
  2425. ('seek_preroll', c_int),
  2426. #('debug_mv', c_int),
  2427. ('chroma_intra_matrix', POINTER(c_uint16)),
  2428. ('dump_separator', POINTER(c_uint8)),
  2429. ('codec_whitelist', c_char_p),
  2430. ('properties', c_uint),
  2431. ('coded_side_data', POINTER(c_int)),#enum AVPacketSideData
  2432. ('nb_coded_side_data', c_int),
  2433. ('hw_frames_ctx', POINTER(AVBufferRef)),
  2434. ('sub_text_format', c_int),
  2435. ('trailing_padding', c_int),
  2436. ('max_pixels', c_int64),
  2437. ('hw_device_ctx', POINTER(AVBufferRef)),
  2438. ('hwaccel_flags', c_int),
  2439. ('apply_cropping', c_int),
  2440. ('extra_hw_frames', c_int)
  2441. )
  2442. #AVCodecContext
  2443. class AVHWAccel(ctypes.Structure): #avcodec.h
  2444. _fields_ = (('name', c_char_p),
  2445. ('type', c_int),#enum AVMediaType
  2446. ('id', c_int), #enum AVCodecID
  2447. ('pix_fmt', c_int), #enum AVPixelFormat
  2448. ('capabilities', c_int),
  2449. ('alloc_frame', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),POINTER(AVFrame)))),
  2450. ('start_frame', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),POINTER(c_uint8),c_uint32))),
  2451. ('decode_params', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),c_int,POINTER(c_uint8),c_uint32))),
  2452. ('decode_slice', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),POINTER(c_uint8),c_uint32))),
  2453. ('end_frame', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext)))),
  2454. ('frame_priv_data_size', c_int),
  2455. ('decode_mb', POINTER(CFUNCTYPE(None,POINTER(MpegEncContext)))),
  2456. ('init', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext)))),
  2457. ('uninit', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext)))),
  2458. ('priv_data_size', c_int),
  2459. ('caps_internal', c_int),
  2460. ('frame_params', POINTER(CFUNCTYPE(c_int,POINTER(AVCodecContext),POINTER(AVBufferRef))))
  2461. )
  2462. #AVHWAccel
  2463. class AVInputFormat(ctypes.Structure): #avformat.h
  2464. pass
  2465. class AVOutputFormat(ctypes.Structure): #avformat.h
  2466. pass
  2467. class AVStream(ctypes.Structure): #avformat.h
  2468. pass
  2469. class AVProgram(ctypes.Structure): #avformat.h
  2470. pass
  2471. class AVChapter(ctypes.Structure): #avformat.h
  2472. pass
  2473. class AVIOContext(ctypes.Structure): #avio.h
  2474. pass
  2475. class AVIOInterruptCB(ctypes.Structure): #avio.h
  2476. pass
  2477. class AVFormatInternal(ctypes.Structure):
  2478. pass
  2479. class AVFormatContext(ctypes.Structure): #avformat.h
  2480. pass
  2481. class AVPacketSideData(ctypes.Structure):
  2482. pass
  2483. class AVCodecParameters(ctypes.Structure): #avcodec.h
  2484. pass
  2485. class AVStreamInfo(ctypes.Structure):
  2486. pass
  2487. class AVPacketList(ctypes.Structure):
  2488. pass
  2489. class AVProbeData(ctypes.Structure):
  2490. pass
  2491. class AVIndexEntry(ctypes.Structure):
  2492. pass
  2493. class AVStreamInternal(ctypes.Structure):
  2494. pass
  2495.  
  2496. class AVIOInterruptCB(ctypes.Structure): #avio.h
  2497. _fields_ = [
  2498. ('callback', POINTER(CFUNCTYPE(POINTER(c_int),c_void_p))),
  2499. ('opaque', c_void_p)
  2500. ]
  2501. class AVCodecParameters(ctypes.Structure): #avcodec.h
  2502. _fields_ = [
  2503. ('codec_type', c_int), #enum AVMediaType
  2504. ('codec_id', c_int), #enum AVCodecID
  2505. ('codec_tag', c_uint32),
  2506. ('extradata', POINTER(c_uint8)),
  2507. ('extradata_size', c_int),
  2508. ('format', c_int),
  2509. ('bit_rate', c_int64),
  2510. ('bits_per_coded_sample', c_int),
  2511. ('bits_per_raw_sample', c_int),
  2512. ('profile', c_int),
  2513. ('level', c_int),
  2514. ('width', c_int),
  2515. ('height', c_int),
  2516. ('sample_aspect_ratio', AVRational),
  2517. ('field_order', c_int), #enum
  2518. ('color_range', c_int), #enum
  2519. ('color_primaries', c_int), #enum
  2520. ('color_trc', c_int), #enum
  2521. ('color_space', c_int), #enum
  2522. ('chroma_location', c_int), #enum
  2523. ('video_delay', c_int),
  2524. ('channel_layout', c_uint64),
  2525. ('channels', c_int),
  2526. ('sample_rate', c_int),
  2527. ('block_align', c_int),
  2528. ('frame_size', c_int),
  2529. ('initial_padding', c_int),
  2530. ('trailing_padding', c_int),
  2531. ('seek_preroll', c_int),
  2532. ]
  2533.  
  2534. av_format_control_message=POINTER(CFUNCTYPE(c_int,POINTER(AVFormatContext),c_int,c_void_p,c_size_t))
  2535. MAX_REORDER_DELAY=16
  2536. class AVStream(Structure):
  2537. _fields_ = [
  2538. ('index', c_int),
  2539. ('id', c_int),
  2540. ('codec', POINTER(AVCodecContext)),
  2541. ('priv_data', c_void_p),
  2542. #!('pts', AVFrac),
  2543. ('time_base', AVRational),
  2544. ('start_time', c_int64),
  2545. ('duration', c_int64),
  2546. ('nb_frames', c_int64),
  2547. ('disposition', c_int),
  2548. ('discard', c_int), #enum AVDiscard
  2549. ('sample_aspect_ratio', AVRational),
  2550. ('metadata', POINTER(AVDictionary)),
  2551. ('avg_frame_rate', AVRational),
  2552. ('attached_pic', AVPacket),
  2553. ('side_data', POINTER(AVPacketSideData)),
  2554. ('nb_side_data', c_int),
  2555. ('event_flags', c_int),
  2556. #!
  2557. ('r_frame_rate', AVRational),
  2558. ('recommended_encoder_configuration', c_char_p),
  2559. ('codecpar', POINTER(AVCodecParameters)),
  2560. ('info', POINTER(AVStreamInfo)),
  2561. ('pts_wrap_bits', c_int),
  2562. ('first_dts', c_int64),
  2563. ('cur_dts', c_int64),
  2564. ('last_IP_pts', c_int64),
  2565. ('last_IP_duration', c_int),
  2566. ('probe_packets', c_int),
  2567. ('codec_info_nb_frames', c_int),
  2568. ('need_parsing', c_int), #enum AVStreamParseType
  2569. ('parser', POINTER(AVCodecParserContext)),
  2570. ('last_in_packet_buffer', POINTER(AVPacketList)),
  2571. ('probe_data', AVProbeData),
  2572. ('pts_buffer', c_int64 * (MAX_REORDER_DELAY+1)),
  2573. ('index_entries', POINTER(AVIndexEntry)),
  2574. ('nb_index_entries', c_int),
  2575. ('index_entries_allocated_size', c_uint),
  2576. #!('r_frame_rate', AVRational),
  2577. ('stream_identifier', c_int),
  2578. ('program_num', c_int),
  2579. ('pmt_version', c_int),
  2580. ('pmt_stream_idx', c_int),
  2581. ('interleaver_chunk_size', c_int64),
  2582. ('interleaver_chunk_duration', c_int64),
  2583. ('request_probe', c_int),
  2584. ('skip_to_keyframe', c_int),
  2585. ('skip_samples', c_int),
  2586. ('start_skip_samples', c_int64),
  2587. ('first_discard_sample', c_int64),
  2588. ('last_discard_sample', c_int64),
  2589. ('nb_decoded_frames', c_int),
  2590. ('mux_ts_offset', c_int64),
  2591. ('pts_wrap_reference', c_int64),
  2592. ('pts_wrap_behavior', c_int),
  2593. ('update_initial_durations_done', c_int),
  2594. ('pts_reorder_error', c_int64 * (MAX_REORDER_DELAY+1)),
  2595. ('pts_reorder_error_count', c_uint8 * (MAX_REORDER_DELAY+1)),
  2596. ('last_dts_for_order_check', c_int64),
  2597. ('dts_ordered', c_uint8),
  2598. ('dts_misordered', c_uint8),
  2599. ('inject_global_side_data', c_int),
  2600. #!
  2601. ('display_aspect_ratio', AVRational),
  2602. #!('priv_pts', POINTER(FFFrac)),
  2603. ('internal', POINTER(AVStreamInternal)),
  2604. #!('codecpar', POINTER(AVCodecParameters)),
  2605. ]
  2606. class AVFormatContext(ctypes.Structure):
  2607. _fields_ = (
  2608. ('av_class' ,POINTER(AVClass)),
  2609. ('iformat' ,POINTER(AVInputFormat)),
  2610. ('oformat' ,POINTER(AVOutputFormat)),
  2611. ('priv_data' ,c_void_p),
  2612. ('pb' ,POINTER(AVIOContext)),
  2613. ('ctx_flags' ,c_int),
  2614. ('nb_streams' ,c_uint),
  2615. ('streams' ,POINTER(POINTER(AVStream))),
  2616. ('filename' ,c_byte*1024),
  2617. ('url' ,c_char_p),
  2618. ('start_time' ,c_int64),
  2619. ('duration' ,c_int64),
  2620. ('bit_rate' ,c_int64),
  2621. ('packet_size' ,c_uint),
  2622. ('max_delay' ,c_int),
  2623. ('flags' ,c_int),
  2624. ('probesize' ,c_int64),
  2625. ('max_analyze_duration' ,c_int64),
  2626. ('key' ,POINTER(c_uint8)),
  2627. ('keylen' ,c_int),
  2628. ('nb_programs' ,c_uint),
  2629. ('programs' ,POINTER(POINTER(AVProgram))),
  2630. ('video_codec_id' ,c_int), #enum AVCodecID
  2631. ('audio_codec_id' ,c_int), #enum AVCodecID
  2632. ('subtitle_codec_id' ,c_int), #enum AVCodecID
  2633. ('max_index_size' ,c_uint),
  2634. ('max_picture_buffer' ,c_uint),
  2635. ('nb_chapters' ,c_uint),
  2636. ('chapters' ,POINTER(POINTER(AVChapter))),
  2637. ('metadata' ,POINTER(AVDictionary)),
  2638. ('start_time_realtime' ,c_int64),
  2639. ('fps_probe_size' ,c_int),
  2640. ('error_recognition' ,c_int),
  2641. ('interrupt_callback' ,AVIOInterruptCB),
  2642. ('debug' ,c_int),
  2643. ('max_interleave_delta' ,c_int64),
  2644. ('strict_std_compliance' ,c_int),
  2645. ('event_flags' ,c_int),
  2646. ('max_ts_probe' ,c_int),
  2647. ('avoid_negative_ts' ,c_int),
  2648. ('ts_id' ,c_int),
  2649. ('audio_preload' ,c_int),
  2650. ('max_chunk_duration' ,c_int),
  2651. ('max_chunk_size' ,c_int),
  2652. ('use_wallclock_as_timestamps' ,c_int),
  2653. ('avio_flags' ,c_int),
  2654. ('duration_estimation_method' ,c_int), #enum AVDurationEstimationMethod
  2655. ('skip_initial_bytes' ,c_int64),
  2656. ('correct_ts_overflow' ,c_uint),
  2657. ('seek2any' ,c_int),
  2658. ('flush_packets' ,c_int),
  2659. ('probe_score' ,c_int),
  2660. ('format_probesize' ,c_int),
  2661. ('codec_whitelist' ,c_char_p),
  2662. ('format_whitelist' ,c_char_p),
  2663. ('internal' ,POINTER(AVFormatInternal)),
  2664. ('io_repositioned' ,c_int),
  2665. ('video_codec' ,POINTER(AVCodec)),
  2666. ('audio_codec' ,POINTER(AVCodec)),
  2667. ('subtitle_codec' ,POINTER(AVCodec)),
  2668. ('data_codec' ,POINTER(AVCodec)),
  2669. ('metadata_header_padding' ,c_int),
  2670. ('opaque' ,c_void_p),
  2671. ('control_message_cb' ,av_format_control_message), #typedef was function pointer. but here is not
  2672. ('output_ts_offset' ,c_int64),
  2673. ('dump_separator' ,c_uint8),
  2674. ('data_codec_id' ,c_int), #enum AVCodecID
  2675. ('open_cb' ,POINTER(CFUNCTYPE(c_int,POINTER(AVFormatContext),POINTER(POINTER(AVIOContext)),c_char_p,c_int,POINTER(AVIOInterruptCB),POINTER(POINTER(AVDictionary))))),
  2676. ('protocol_whitelist' ,c_char_p),
  2677. ('io_open' ,POINTER(CFUNCTYPE(c_int,POINTER(AVFormatContext),POINTER(POINTER(AVIOContext)),c_char_p,c_int,POINTER(POINTER(AVDictionary))))),
  2678. ('io_close' ,POINTER(CFUNCTYPE(None,POINTER(AVFormatContext),POINTER(AVIOContext)))),
  2679. ('protocol_blacklist' ,c_char_p),
  2680. ('max_streams' ,c_int),
  2681. ('skip_estimate_duration_from_pts',c_int))
  2682.  
  2683. AV_NOPTS_VALUE=c_int64(0x8000000000000000) #((int64_t)UINT64_C(0x8000000000000000))
  2684.  
  2685. '''
  2686. '''
  2687.  
  2688. from ctypes import *
  2689. import os
  2690. import sys
  2691.  
  2692. os.environ['PATH']='C:\\sw\\ffmpeg-20180702-3c4af57-win64-shared\\bin' #location of avcodec-58.dll
  2693. avcodec=WinDLL('avcodec-58.dll')
  2694. avutil=WinDLL('avutil-56.dll')
  2695. avformat=WinDLL('avformat-58.dll')
  2696. class FFmpegAVFormatContext(Structure):
  2697. _fields_ = [
  2698. ('context', POINTER(AVFormatContext))
  2699. ]
  2700. AVMEDIA_TYPE_VIDEO = 0
  2701. def h264_test(): #api-h264-test.c
  2702. fmt_ctx =FFmpegAVFormatContext() #ctx=POINTER(AVFormatContext) is not working
  2703.  
  2704. avformat.avformat_open_input.argtypes=[POINTER(POINTER(AVFormatContext)),c_char_p,POINTER(AVInputFormat),POINTER(POINTER(AVDictionary))]
  2705. avformat.avformat_open_input.restype=c_int
  2706. ret=avformat.avformat_open_input(byref(fmt_ctx.context),b"F:\\myfile\\idlogo.mp4",None,None)
  2707. #ret=avformat.avformat_open_input(byref(fmt_ctx.context),b"F:\\myfile\\intro.010.png",None,None)
  2708.  
  2709. avformat.avformat_find_stream_info.argtypes=[POINTER(AVFormatContext),POINTER(POINTER(AVDictionary))]
  2710. avformat.avformat_find_stream_info.restype=c_int
  2711. ret=avformat.avformat_find_stream_info(fmt_ctx.context, None)
  2712.  
  2713. avformat.av_find_best_stream.argtypes=[POINTER(AVFormatContext),c_int,c_int,c_int,POINTER(POINTER(AVCodec)),c_int]
  2714. avformat.av_find_best_stream.restype=c_int
  2715. video_stream=avformat.av_find_best_stream(fmt_ctx.context,AVMEDIA_TYPE_VIDEO, -1, -1, None, 0)
  2716.  
  2717. origin_par = fmt_ctx .context[0].streams[video_stream][0].codecpar
  2718.  
  2719. avcodec.avcodec_find_decoder.argtypes=[c_int]
  2720. avcodec.avcodec_find_decoder.restype=POINTER(AVCodec)
  2721. codec = avcodec.avcodec_find_decoder(origin_par[0].codec_id)
  2722.  
  2723. avcodec.avcodec_alloc_context3.argtypes=[POINTER(AVCodec)]
  2724. avcodec.avcodec_alloc_context3.restype=POINTER(AVCodecContext)
  2725. ctx=avcodec.avcodec_alloc_context3(codec)
  2726.  
  2727. avcodec.avcodec_parameters_to_context.argtypes=[POINTER(AVCodecContext),POINTER(AVCodecParameters)]
  2728. avcodec.avcodec_parameters_to_context.restype=c_int
  2729. ret=avcodec.avcodec_parameters_to_context(ctx,origin_par)
  2730.  
  2731. avcodec.avcodec_open2.argtypes=[POINTER(AVCodecContext),POINTER(AVCodec),POINTER(POINTER(AVDictionary))]
  2732. avcodec.avcodec_open2.restype=c_int
  2733. ret=avcodec.avcodec_open2(ctx,codec,None)
  2734.  
  2735. avutil.av_frame_alloc.restype=POINTER(AVFrame)
  2736. fr=avutil.av_frame_alloc()
  2737.  
  2738. avutil.av_image_get_buffer_size.argtypes=[c_int,c_int,c_int,c_int]
  2739. avutil.av_image_get_buffer_size.restype=c_int
  2740. byte_buffer_size=avutil.av_image_get_buffer_size(ctx[0].pix_fmt,ctx[0].width,ctx[0].height,16)
  2741.  
  2742. avutil.av_malloc.argtypes=[c_int]
  2743. avutil.av_malloc.restype=c_void_p#POINTER(c_ubyte)
  2744. byte_buffer=avutil.av_malloc(byte_buffer_size)
  2745.  
  2746. print('video',video_stream, fmt_ctx.context[0].streams[video_stream][0].time_base.num, fmt_ctx.context[0].streams[video_stream][0].time_base.den)
  2747.  
  2748. pkt=AVPacket()
  2749. avcodec.av_init_packet.argtypes=[POINTER(AVPacket)]
  2750. avcodec.av_init_packet.restype=None
  2751. avcodec.av_init_packet(byref(pkt))
  2752.  
  2753. avcodec.av_packet_unref.argtypes=[POINTER(AVPacket)]
  2754. avcodec.av_packet_unref.restype=None
  2755.  
  2756. end_of_stream=0
  2757. got_frame=0
  2758. i=0
  2759. avformat.av_read_frame.argtypes=[POINTER(AVFormatContext),POINTER(AVPacket)]
  2760. avformat.av_read_frame.restype=c_int
  2761.  
  2762. avcodec.avcodec_decode_video2.argtypes=[POINTER(AVCodecContext),POINTER(AVFrame),POINTER(c_int),POINTER(AVPacket)]
  2763. avcodec.avcodec_decode_video2.restype=c_int
  2764.  
  2765. avutil.av_adler32_update.argtypes=[c_ulong,POINTER(c_uint8),c_int]
  2766. avutil.av_adler32_update.restype=c_ulong
  2767.  
  2768. avutil.av_image_copy_to_buffer.argtypes=[POINTER(c_uint8),c_int,
  2769. POINTER(c_uint8)*4,c_int*4,
  2770. c_int,c_int,c_int,c_int]
  2771. avutil.av_image_copy_to_buffer.restype=c_int
  2772.  
  2773. while True: #do..while is do not appear in python
  2774. if(not end_of_stream):
  2775. if(avformat.av_read_frame(fmt_ctx.context, byref(pkt)) < 0):
  2776. end_of_stream=1
  2777. if(end_of_stream):
  2778. pkt.data=None
  2779. pkt.size=0
  2780. if ((pkt.stream_index == video_stream) or end_of_stream):
  2781. got_frame=0
  2782. if(pkt.pts==AV_NOPTS_VALUE):
  2783. pkt.pts=pkt.dts=i
  2784. got_frame_c=c_int()
  2785. ret=avcodec.avcodec_decode_video2(ctx,fr,byref(got_frame_c),byref(pkt))
  2786. got_frame=got_frame_c.value
  2787. if(ret<0):
  2788. print("avcodec_decode_video2",ret)
  2789. return
  2790. if(got_frame):
  2791.  
  2792. c_uint8_p=POINTER(c_uint8)
  2793. byte_buffer_uint8_p=cast(byte_buffer,c_uint8_p)
  2794.  
  2795. fr_data=(POINTER(c_uint8)*4)()
  2796. fr_data[0]=fr[0].data[0]
  2797. fr_data[1]=fr[0].data[1]
  2798. fr_data[2]=fr[0].data[2]
  2799. fr_data[3]=fr[0].data[3]
  2800.  
  2801. fr_linesize=(c_int*4)()
  2802. fr_linesize[0]=fr[0].linesize[0]
  2803. fr_linesize[1]=fr[0].linesize[1]
  2804. fr_linesize[2]=fr[0].linesize[2]
  2805. fr_linesize[3]=fr[0].linesize[3]
  2806.  
  2807. number_of_written_bytes=avutil.av_image_copy_to_buffer(byte_buffer_uint8_p,byte_buffer_size,
  2808. fr_data, fr_linesize,
  2809. ctx[0].pix_fmt,ctx[0].width,ctx[0].height,1)
  2810. if(number_of_written_bytes<0):
  2811. print("av_image_copy_to_buffer")
  2812. return
  2813. print(video_stream,
  2814. fr[0].pts, fr[0].pkt_dts, fr[0].pkt_duration,
  2815. number_of_written_bytes, hex(avutil.av_adler32_update(0, byte_buffer_uint8_p, number_of_written_bytes)))
  2816. avcodec.av_packet_unref(byref(pkt))
  2817. avcodec.av_init_packet(byref(pkt))
  2818. i+=1
  2819.  
  2820. if(not (not end_of_stream or got_frame)):break
  2821.  
  2822. avcodec.av_packet_unref(byref(pkt))
  2823. avutil.av_frame_free.argtypes=[POINTER(POINTER(AVFrame))]
  2824. avutil.av_frame_free(byref(fr))
  2825. avcodec.avcodec_close.argtypes=[POINTER(AVCodecContext)]
  2826. avcodec.avcodec_close.restype=c_int
  2827. avcodec.avcodec_close(ctx)
  2828. avformat.avformat_close_input.argtypes=[POINTER(POINTER(AVFormatContext))]
  2829. avformat.avformat_close_input(byref(fmt_ctx.context))
  2830. avcodec.avcodec_free_context.argtypes=[POINTER(POINTER(AVCodecContext))]
  2831. avcodec.avcodec_free_context(byref(ctx))
  2832. avutil.av_freep.argtypes=[c_void_p]
  2833. avutil.av_freep(byref(byte_buffer_uint8_p))
  2834.  
  2835.  
  2836. '''
  2837. run main
  2838. '''
  2839.  
  2840. if __name__=='__main__':
  2841. h264_test()
Add Comment
Please, Sign In to add comment