FFmpeg.avformat.g.cs 57 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084
  1. #pragma warning disable CS0649
  2. #pragma warning disable IDE1006
  3. using System.Runtime.InteropServices;
  4. namespace Bmp.Core.FFMpeg.CsCorePorts.FFMpegWrap.Interops;
  5. internal unsafe partial struct AVBuffer
  6. {
  7. }
  8. internal unsafe partial struct AVBufferPool
  9. {
  10. }
  11. internal unsafe partial struct AVBPrint
  12. {
  13. }
  14. internal unsafe partial struct AVDictionary
  15. {
  16. internal int count;
  17. internal AVDictionaryEntry* elems;
  18. public AVDictionaryEntry[] Elements
  19. {
  20. get { return GetElements(); }
  21. }
  22. private AVDictionaryEntry[] GetElements()
  23. {
  24. var cpy = elems;
  25. AVDictionaryEntry[] elements = new AVDictionaryEntry[count];
  26. for (int i = 0; i < count; i++)
  27. {
  28. elements[i] = cpy[i];
  29. }
  30. return elements;
  31. }
  32. }
  33. internal unsafe partial struct AVCodecInternal
  34. {
  35. }
  36. internal unsafe partial struct AVCodecDefault
  37. {
  38. }
  39. internal unsafe partial struct MpegEncContext
  40. {
  41. }
  42. internal unsafe partial struct ReSampleContext
  43. {
  44. }
  45. internal unsafe partial struct AVResampleContext
  46. {
  47. }
  48. internal unsafe partial struct AVBSFInternal
  49. {
  50. }
  51. internal unsafe partial struct AVBSFList
  52. {
  53. }
  54. internal unsafe partial struct AVIOInterruptCB
  55. {
  56. internal IntPtr @callback;
  57. internal void* @opaque;
  58. }
  59. internal unsafe partial struct AVIODirEntry
  60. {
  61. internal sbyte* @name;
  62. internal int @type;
  63. internal int @utf8;
  64. internal long @size;
  65. internal long @modification_timestamp;
  66. internal long @access_timestamp;
  67. internal long @status_change_timestamp;
  68. internal long @user_id;
  69. internal long @group_id;
  70. internal long @filemode;
  71. }
  72. internal unsafe partial struct AVIODirContext
  73. {
  74. internal URLContext* @url_context;
  75. }
  76. internal unsafe partial struct URLContext
  77. {
  78. }
  79. internal unsafe partial struct AVIOContext
  80. {
  81. internal AVClass* @av_class;
  82. internal sbyte* @buffer;
  83. internal int @buffer_size;
  84. internal sbyte* @buf_ptr;
  85. internal sbyte* @buf_end;
  86. internal void* @opaque;
  87. internal IntPtr @read_packet;
  88. internal IntPtr @write_packet;
  89. internal IntPtr @seek;
  90. internal long @pos;
  91. internal int @must_flush;
  92. internal int @eof_reached;
  93. internal int @write_flag;
  94. internal int @max_packet_size;
  95. internal int @checksum;
  96. internal sbyte* @checksum_ptr;
  97. internal IntPtr @update_checksum;
  98. internal int @error;
  99. internal IntPtr @read_pause;
  100. internal IntPtr @read_seek;
  101. internal int @seekable;
  102. internal long @maxsize;
  103. internal int @direct;
  104. internal long @bytes_read;
  105. internal int @seek_count;
  106. internal int @writeout_count;
  107. internal int @orig_buffer_size;
  108. internal int @short_seek_threshold;
  109. internal sbyte* @protocol_whitelist;
  110. internal sbyte* @protocol_blacklist;
  111. internal IntPtr @write_data_type;
  112. internal int @ignore_boundary_point;
  113. internal AVIODataMarkerType @current_type;
  114. internal long @last_time;
  115. }
  116. internal unsafe partial struct AVBPrint
  117. {
  118. }
  119. internal unsafe partial struct AVFormatContext
  120. {
  121. }
  122. internal unsafe partial struct AVDeviceInfoList
  123. {
  124. }
  125. internal unsafe partial struct AVDeviceCapabilitiesQuery
  126. {
  127. }
  128. internal unsafe partial struct AVFrac
  129. {
  130. internal long @val;
  131. internal long @num;
  132. internal long @den;
  133. }
  134. internal unsafe partial struct AVCodecTag
  135. {
  136. }
  137. internal unsafe partial struct AVProbeData
  138. {
  139. internal sbyte* @filename;
  140. internal sbyte* @buf;
  141. internal int @buf_size;
  142. internal sbyte* @mime_type;
  143. }
  144. internal unsafe partial struct AVOutputFormat
  145. {
  146. internal sbyte* @name;
  147. internal sbyte* @long_name;
  148. internal sbyte* @mime_type;
  149. internal sbyte* @extensions;
  150. internal AvCodecId @audio_codec;
  151. internal AvCodecId @video_codec;
  152. internal AvCodecId @subtitle_codec;
  153. internal int @flags;
  154. internal AVCodecTag** @codec_tag;
  155. internal AVClass* @priv_class;
  156. internal AVOutputFormat* @next;
  157. internal int @priv_data_size;
  158. internal IntPtr @write_header;
  159. internal IntPtr @write_packet;
  160. internal IntPtr @write_trailer;
  161. internal IntPtr @interleave_packet;
  162. internal IntPtr @query_codec;
  163. internal IntPtr @get_output_timestamp;
  164. internal IntPtr @control_message;
  165. internal IntPtr @write_uncoded_frame;
  166. internal IntPtr @get_device_list;
  167. internal IntPtr @create_device_capabilities;
  168. internal IntPtr @free_device_capabilities;
  169. internal AvCodecId @data_codec;
  170. internal IntPtr @init;
  171. internal IntPtr @deinit;
  172. internal IntPtr @check_bitstream;
  173. }
  174. internal unsafe partial struct AVInputFormat
  175. {
  176. internal sbyte* @name;
  177. internal sbyte* @long_name;
  178. internal int @flags;
  179. internal sbyte* @extensions;
  180. internal AVCodecTag** @codec_tag;
  181. internal AVClass* @priv_class;
  182. internal sbyte* @mime_type;
  183. internal AVInputFormat* @next;
  184. internal int @raw_codec_id;
  185. internal int @priv_data_size;
  186. internal IntPtr @read_probe;
  187. internal IntPtr @read_header;
  188. internal IntPtr @read_packet;
  189. internal IntPtr @read_close;
  190. internal IntPtr @read_seek;
  191. internal IntPtr @read_timestamp;
  192. internal IntPtr @read_play;
  193. internal IntPtr @read_pause;
  194. internal IntPtr @read_seek2;
  195. internal IntPtr @get_device_list;
  196. internal IntPtr @create_device_capabilities;
  197. internal IntPtr @free_device_capabilities;
  198. }
  199. internal unsafe partial struct AVIndexEntry
  200. {
  201. internal long @pos;
  202. internal long @timestamp;
  203. internal int @flags;
  204. internal int @size;
  205. internal int @min_distance;
  206. }
  207. internal unsafe partial struct AVStreamInternal
  208. {
  209. }
  210. internal unsafe partial struct AVStream
  211. {
  212. internal int @index;
  213. internal int @id;
  214. internal AVCodecContext* @codec;
  215. internal void* @priv_data;
  216. internal AVFrac @pts;
  217. internal AVRational @time_base;
  218. internal long @start_time;
  219. internal long @duration;
  220. internal long @nb_frames;
  221. internal int @disposition;
  222. internal AVDiscard @discard;
  223. internal AVRational @sample_aspect_ratio;
  224. internal AVDictionary* @metadata;
  225. internal AVRational @avg_frame_rate;
  226. internal AVPacket @attached_pic;
  227. internal AVPacketSideData* @side_data;
  228. internal int @nb_side_data;
  229. internal int @event_flags;
  230. internal FFMPEG_INFO* @info;
  231. internal int @pts_wrap_bits;
  232. internal long @first_dts;
  233. internal long @cur_dts;
  234. internal long @last_IP_pts;
  235. internal int @last_IP_duration;
  236. internal int @probe_packets;
  237. internal int @codec_info_nb_frames;
  238. internal AVStreamParseType @need_parsing;
  239. internal AVCodecParserContext* @parser;
  240. internal AVPacketList* @last_in_packet_buffer;
  241. internal AVProbeData @probe_data;
  242. internal fixed long @pts_buffer[17];
  243. internal AVIndexEntry* @index_entries;
  244. internal int @nb_index_entries;
  245. internal uint @index_entries_allocated_size;
  246. internal AVRational @r_frame_rate;
  247. internal int @stream_identifier;
  248. internal long @interleaver_chunk_size;
  249. internal long @interleaver_chunk_duration;
  250. internal int @request_probe;
  251. internal int @skip_to_keyframe;
  252. internal int @skip_samples;
  253. internal long @start_skip_samples;
  254. internal long @first_discard_sample;
  255. internal long @last_discard_sample;
  256. internal int @nb_decoded_frames;
  257. internal long @mux_ts_offset;
  258. internal long @pts_wrap_reference;
  259. internal int @pts_wrap_behavior;
  260. internal int @update_initial_durations_done;
  261. internal fixed long @pts_reorder_error[17];
  262. internal fixed sbyte @pts_reorder_error_count[17];
  263. internal long @last_dts_for_order_check;
  264. internal sbyte @dts_ordered;
  265. internal sbyte @dts_misordered;
  266. internal int @inject_global_side_data;
  267. internal sbyte* @recommended_encoder_configuration;
  268. internal AVRational @display_aspect_ratio;
  269. internal FFFrac* @priv_pts;
  270. internal AVStreamInternal* @internal;
  271. internal AVCodecParameters* @codecpar;
  272. }
  273. internal unsafe partial struct FFFrac
  274. {
  275. }
  276. internal unsafe partial struct AVPacketList
  277. {
  278. }
  279. internal unsafe partial struct FFMPEG_INFO
  280. {
  281. internal long @last_dts;
  282. internal long @duration_gcd;
  283. internal int @duration_count;
  284. internal long @rfps_duration_sum;
  285. internal IntPtr @duration_error;
  286. internal long @codec_info_duration;
  287. internal long @codec_info_duration_fields;
  288. internal int @found_decoder;
  289. internal long @last_duration;
  290. internal long @fps_first_dts;
  291. internal int @fps_first_dts_idx;
  292. internal long @fps_last_dts;
  293. internal int @fps_last_dts_idx;
  294. }
  295. internal unsafe partial struct AVProgram
  296. {
  297. internal int @id;
  298. internal int @flags;
  299. internal AVDiscard @discard;
  300. internal uint* @stream_index;
  301. internal uint @nb_stream_indexes;
  302. internal AVDictionary* @metadata;
  303. internal int @program_num;
  304. internal int @pmt_pid;
  305. internal int @pcr_pid;
  306. internal long @start_time;
  307. internal long @end_time;
  308. internal long @pts_wrap_reference;
  309. internal int @pts_wrap_behavior;
  310. }
  311. internal unsafe partial struct AVChapter
  312. {
  313. internal int @id;
  314. internal AVRational @time_base;
  315. internal long @start;
  316. internal long @end;
  317. internal AVDictionary* @metadata;
  318. }
  319. internal unsafe partial struct AVFormatInternal
  320. {
  321. }
  322. internal unsafe partial struct AVFormatContext
  323. {
  324. internal AVClass* @av_class;
  325. internal AVInputFormat* @iformat;
  326. internal AVOutputFormat* @oformat;
  327. internal void* @priv_data;
  328. internal AVIOContext* @pb;
  329. internal int @ctx_flags;
  330. internal uint @nb_streams;
  331. internal AVStream** @streams;
  332. internal fixed sbyte @filename[1024];
  333. internal long @start_time;
  334. internal long @duration;
  335. internal long @bit_rate;
  336. internal uint @packet_size;
  337. internal int @max_delay;
  338. internal int @flags;
  339. internal long @probesize;
  340. internal long @max_analyze_duration;
  341. internal sbyte* @key;
  342. internal int @keylen;
  343. internal uint @nb_programs;
  344. internal AVProgram** @programs;
  345. internal AvCodecId @video_codec_id;
  346. internal AvCodecId @audio_codec_id;
  347. internal AvCodecId @subtitle_codec_id;
  348. internal uint @max_index_size;
  349. internal uint @max_picture_buffer;
  350. internal uint @nb_chapters;
  351. internal AVChapter** @chapters;
  352. internal AVDictionary* @metadata;
  353. internal long @start_time_realtime;
  354. internal int @fps_probe_size;
  355. internal int @error_recognition;
  356. internal AVIOInterruptCB @interrupt_callback;
  357. internal int @debug;
  358. internal long @max_interleave_delta;
  359. internal int @strict_std_compliance;
  360. internal int @event_flags;
  361. internal int @max_ts_probe;
  362. internal int @avoid_negative_ts;
  363. internal int @ts_id;
  364. internal int @audio_preload;
  365. internal int @max_chunk_duration;
  366. internal int @max_chunk_size;
  367. internal int @use_wallclock_as_timestamps;
  368. internal int @avio_flags;
  369. internal AVDurationEstimationMethod @duration_estimation_method;
  370. internal long @skip_initial_bytes;
  371. internal uint @correct_ts_overflow;
  372. internal int @seek2any;
  373. internal int @flush_packets;
  374. internal int @probe_score;
  375. internal int @format_probesize;
  376. internal sbyte* @codec_whitelist;
  377. internal sbyte* @format_whitelist;
  378. internal AVFormatInternal* @internal;
  379. internal int @io_repositioned;
  380. internal AVCodec* @video_codec;
  381. internal AVCodec* @audio_codec;
  382. internal AVCodec* @subtitle_codec;
  383. internal AVCodec* @data_codec;
  384. internal int @metadata_header_padding;
  385. internal void* @opaque;
  386. internal IntPtr @control_message_cb;
  387. internal long @output_ts_offset;
  388. internal sbyte* @dump_separator;
  389. internal AvCodecId @data_codec_id;
  390. internal IntPtr @open_cb;
  391. internal sbyte* @protocol_whitelist;
  392. internal IntPtr @io_open;
  393. internal IntPtr @io_close;
  394. internal sbyte* @protocol_blacklist;
  395. }
  396. internal unsafe partial struct AVPacketList
  397. {
  398. internal AVPacket @pkt;
  399. internal AVPacketList* @next;
  400. }
  401. [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
  402. internal unsafe delegate int av_format_control_message(AVFormatContext* @s, int @type, void* @data, ulong @data_size);
  403. [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
  404. internal unsafe delegate int AVOpenCallback(AVFormatContext* @s, AVIOContext** @pb, [MarshalAs(UnmanagedType.LPStr)] string @url, int @flags, AVIOInterruptCB* @int_cb, AVDictionary** @options);
  405. internal enum AVIODirEntryType : int
  406. {
  407. @AVIO_ENTRY_UNKNOWN = 0,
  408. @AVIO_ENTRY_BLOCK_DEVICE = 1,
  409. @AVIO_ENTRY_CHARACTER_DEVICE = 2,
  410. @AVIO_ENTRY_DIRECTORY = 3,
  411. @AVIO_ENTRY_NAMED_PIPE = 4,
  412. @AVIO_ENTRY_SYMBOLIC_LINK = 5,
  413. @AVIO_ENTRY_SOCKET = 6,
  414. @AVIO_ENTRY_FILE = 7,
  415. @AVIO_ENTRY_SERVER = 8,
  416. @AVIO_ENTRY_SHARE = 9,
  417. @AVIO_ENTRY_WORKGROUP = 10,
  418. }
  419. internal enum AVIODataMarkerType : int
  420. {
  421. @AVIO_DATA_MARKER_HEADER = 0,
  422. @AVIO_DATA_MARKER_SYNC_POINT = 1,
  423. @AVIO_DATA_MARKER_BOUNDARY_POINT = 2,
  424. @AVIO_DATA_MARKER_UNKNOWN = 3,
  425. @AVIO_DATA_MARKER_TRAILER = 4,
  426. }
  427. internal enum AVStreamParseType : int
  428. {
  429. @AVSTREAM_PARSE_NONE = 0,
  430. @AVSTREAM_PARSE_FULL = 1,
  431. @AVSTREAM_PARSE_HEADERS = 2,
  432. @AVSTREAM_PARSE_TIMESTAMPS = 3,
  433. @AVSTREAM_PARSE_FULL_ONCE = 4,
  434. @AVSTREAM_PARSE_FULL_RAW = 1463898624,
  435. }
  436. internal enum AVDurationEstimationMethod : int
  437. {
  438. @AVFMT_DURATION_FROM_PTS = 0,
  439. @AVFMT_DURATION_FROM_STREAM = 1,
  440. @AVFMT_DURATION_FROM_BITRATE = 2,
  441. }
  442. internal enum AVTimebaseSource : int
  443. {
  444. @AVFMT_TBCF_AUTO = -1,
  445. @AVFMT_TBCF_DECODER = 0,
  446. @AVFMT_TBCF_DEMUXER = 1,
  447. @AVFMT_TBCF_R_FRAMERATE = 2,
  448. }
  449. internal unsafe static partial class FFMPEG
  450. {
  451. internal const int LIBAVFORMAT_VERSION_MAJOR = 57;
  452. internal const int LIBAVFORMAT_VERSION_MINOR = 56;
  453. internal const int LIBAVFORMAT_VERSION_MICRO = 100;
  454. internal const bool FF_API_LAVF_BITEXACT = (LIBAVFORMAT_VERSION_MAJOR<58);
  455. internal const bool FF_API_LAVF_FRAC = (LIBAVFORMAT_VERSION_MAJOR<58);
  456. internal const bool FF_API_LAVF_CODEC_TB = (LIBAVFORMAT_VERSION_MAJOR<58);
  457. internal const bool FF_API_URL_FEOF = (LIBAVFORMAT_VERSION_MAJOR<58);
  458. internal const bool FF_API_LAVF_FMT_RAWPICTURE = (LIBAVFORMAT_VERSION_MAJOR<58);
  459. internal const bool FF_API_COMPUTE_PKT_FIELDS2 = (LIBAVFORMAT_VERSION_MAJOR<58);
  460. internal const bool FF_API_OLD_OPEN_CALLBACKS = (LIBAVFORMAT_VERSION_MAJOR<58);
  461. internal const bool FF_API_LAVF_AVCTX = (LIBAVFORMAT_VERSION_MAJOR<58);
  462. internal const bool FF_API_NOCONST_GET_SIDE_DATA = (LIBAVFORMAT_VERSION_MAJOR<58);
  463. internal const bool FF_API_HTTP_USER_AGENT = (LIBAVFORMAT_VERSION_MAJOR<58);
  464. internal const int FF_API_R_FRAME_RATE = 1;
  465. internal const int AVIO_SEEKABLE_NORMAL = 0x0001;
  466. internal const int AVSEEK_SIZE = 0x10000;
  467. internal const int AVSEEK_FORCE = 0x20000;
  468. internal const int AVIO_FLAG_READ = 1;
  469. internal const int AVIO_FLAG_WRITE = 2;
  470. internal const int AVIO_FLAG_READ_WRITE = (AVIO_FLAG_READ|AVIO_FLAG_WRITE);
  471. internal const int AVIO_FLAG_NONBLOCK = 8;
  472. internal const int AVIO_FLAG_DIRECT = 0x8000;
  473. internal const int AVPROBE_SCORE_RETRY = (AVPROBE_SCORE_MAX/4);
  474. internal const int AVPROBE_SCORE_STREAM_RETRY = (AVPROBE_SCORE_MAX/4-1);
  475. internal const int AVPROBE_SCORE_EXTENSION = 50;
  476. internal const int AVPROBE_SCORE_MIME = 75;
  477. internal const int AVPROBE_SCORE_MAX = 100;
  478. internal const int AVPROBE_PADDING_SIZE = 32;
  479. internal const int AVFMT_NOFILE = 0x0001;
  480. internal const int AVFMT_NEEDNUMBER = 0x0002;
  481. internal const int AVFMT_SHOW_IDS = 0x0008;
  482. internal const int AVFMT_RAWPICTURE = 0x0020;
  483. internal const int AVFMT_GLOBALHEADER = 0x0040;
  484. internal const int AVFMT_NOTIMESTAMPS = 0x0080;
  485. internal const int AVFMT_GENERIC_INDEX = 0x0100;
  486. internal const int AVFMT_TS_DISCONT = 0x0200;
  487. internal const int AVFMT_VARIABLE_FPS = 0x0400;
  488. internal const int AVFMT_NODIMENSIONS = 0x0800;
  489. internal const int AVFMT_NOSTREAMS = 0x1000;
  490. internal const int AVFMT_NOBINSEARCH = 0x2000;
  491. internal const int AVFMT_NOGENSEARCH = 0x4000;
  492. internal const int AVFMT_NO_BYTE_SEEK = 0x8000;
  493. internal const int AVFMT_ALLOW_FLUSH = 0x10000;
  494. internal const int AVFMT_TS_NONSTRICT = 0x20000;
  495. internal const int AVFMT_TS_NEGATIVE = 0x40000;
  496. internal const int AVFMT_SEEK_TO_PTS = 0x4000000;
  497. internal const int AVINDEX_KEYFRAME = 0x0001;
  498. internal const int AVINDEX_DISCARD_FRAME = 0x0002;
  499. internal const int AV_DISPOSITION_DEFAULT = 0x0001;
  500. internal const int AV_DISPOSITION_DUB = 0x0002;
  501. internal const int AV_DISPOSITION_ORIGINAL = 0x0004;
  502. internal const int AV_DISPOSITION_COMMENT = 0x0008;
  503. internal const int AV_DISPOSITION_LYRICS = 0x0010;
  504. internal const int AV_DISPOSITION_KARAOKE = 0x0020;
  505. internal const int AV_DISPOSITION_FORCED = 0x0040;
  506. internal const int AV_DISPOSITION_HEARING_IMPAIRED = 0x0080;
  507. internal const int AV_DISPOSITION_VISUAL_IMPAIRED = 0x0100;
  508. internal const int AV_DISPOSITION_CLEAN_EFFECTS = 0x0200;
  509. internal const int AV_DISPOSITION_ATTACHED_PIC = 0x0400;
  510. internal const int AV_DISPOSITION_TIMED_THUMBNAILS = 0x0800;
  511. internal const int AV_DISPOSITION_CAPTIONS = 0x10000;
  512. internal const int AV_DISPOSITION_DESCRIPTIONS = 0x20000;
  513. internal const int AV_DISPOSITION_METADATA = 0x40000;
  514. internal const int AV_PTS_WRAP_IGNORE = 0;
  515. internal const int AV_PTS_WRAP_ADD_OFFSET = 1;
  516. internal const int AV_PTS_WRAP_SUB_OFFSET = -1;
  517. internal const int AVSTREAM_EVENT_FLAG_METADATA_UPDATED = 0x0001;
  518. internal const int MAX_STD_TIMEBASES = (30*12+30+3+6);
  519. internal const int MAX_REORDER_DELAY = 16;
  520. internal const int AV_PROGRAM_RUNNING = 1;
  521. internal const int AVFMTCTX_NOHEADER = 0x0001;
  522. internal const int AVFMT_FLAG_GENPTS = 0x0001;
  523. internal const int AVFMT_FLAG_IGNIDX = 0x0002;
  524. internal const int AVFMT_FLAG_NONBLOCK = 0x0004;
  525. internal const int AVFMT_FLAG_IGNDTS = 0x0008;
  526. internal const int AVFMT_FLAG_NOFILLIN = 0x0010;
  527. internal const int AVFMT_FLAG_NOPARSE = 0x0020;
  528. internal const int AVFMT_FLAG_NOBUFFER = 0x0040;
  529. internal const int AVFMT_FLAG_CUSTOM_IO = 0x0080;
  530. internal const int AVFMT_FLAG_DISCARD_CORRUPT = 0x0100;
  531. internal const int AVFMT_FLAG_FLUSH_PACKETS = 0x0200;
  532. internal const int AVFMT_FLAG_BITEXACT = 0x0400;
  533. internal const int AVFMT_FLAG_MP4A_LATM = 0x8000;
  534. internal const int AVFMT_FLAG_SORT_DTS = 0x10000;
  535. internal const int AVFMT_FLAG_PRIV_OPT = 0x20000;
  536. internal const int AVFMT_FLAG_KEEP_SIDE_DATA = 0x40000;
  537. internal const int AVFMT_FLAG_FAST_SEEK = 0x80000;
  538. internal const int AVFMT_FLAG_SHORTEST = 0x100000;
  539. internal const int AVFMT_FLAG_AUTO_BSF = 0x200000;
  540. internal const int FF_FDEBUG_TS = 0x0001;
  541. internal const int AVFMT_EVENT_FLAG_METADATA_UPDATED = 0x0001;
  542. internal const int AVFMT_AVOID_NEG_TS_AUTO = -1;
  543. internal const int AVFMT_AVOID_NEG_TS_MAKE_NON_NEGATIVE = 1;
  544. internal const int AVFMT_AVOID_NEG_TS_MAKE_ZERO = 2;
  545. internal const int AVSEEK_FLAG_BACKWARD = 1;
  546. internal const int AVSEEK_FLAG_BYTE = 2;
  547. internal const int AVSEEK_FLAG_ANY = 4;
  548. internal const int AVSEEK_FLAG_FRAME = 8;
  549. internal const int AVSTREAM_INIT_IN_WRITE_HEADER = 0;
  550. internal const int AVSTREAM_INIT_IN_INIT_OUTPUT = 1;
  551. internal const int AV_FRAME_FILENAME_FLAGS_MULTIPLE = 1;
  552. private const string libavformat = "avformat-57";
  553. [DllImport(libavformat, EntryPoint = "avio_find_protocol_name", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  554. [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(ConstCharPtrMarshaler))]
  555. internal static extern string avio_find_protocol_name([MarshalAs(UnmanagedType.LPStr)] string @url);
  556. [DllImport(libavformat, EntryPoint = "avio_check", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  557. internal static extern int avio_check([MarshalAs(UnmanagedType.LPStr)] string @url, int @flags);
  558. [DllImport(libavformat, EntryPoint = "avpriv_io_move", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  559. internal static extern int avpriv_io_move([MarshalAs(UnmanagedType.LPStr)] string @url_src, [MarshalAs(UnmanagedType.LPStr)] string @url_dst);
  560. [DllImport(libavformat, EntryPoint = "avpriv_io_delete", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  561. internal static extern int avpriv_io_delete([MarshalAs(UnmanagedType.LPStr)] string @url);
  562. [DllImport(libavformat, EntryPoint = "avio_open_dir", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  563. internal static extern int avio_open_dir(AVIODirContext** @s, [MarshalAs(UnmanagedType.LPStr)] string @url, AVDictionary** @options);
  564. [DllImport(libavformat, EntryPoint = "avio_read_dir", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  565. internal static extern int avio_read_dir(AVIODirContext* @s, AVIODirEntry** @next);
  566. [DllImport(libavformat, EntryPoint = "avio_close_dir", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  567. internal static extern int avio_close_dir(AVIODirContext** @s);
  568. [DllImport(libavformat, EntryPoint = "avio_free_directory_entry", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  569. internal static extern void avio_free_directory_entry(AVIODirEntry** @entry);
  570. [DllImport(libavformat, EntryPoint = "avio_alloc_context", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  571. internal static extern AVIOContext* avio_alloc_context(sbyte* @buffer, int @buffer_size, int @write_flag, void* @opaque, IntPtr @read_packet, IntPtr @write_packet, IntPtr @seek);
  572. [DllImport(libavformat, EntryPoint = "avio_w8", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  573. internal static extern void avio_w8(AVIOContext* @s, int @b);
  574. [DllImport(libavformat, EntryPoint = "avio_write", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  575. internal static extern void avio_write(AVIOContext* @s, sbyte* @buf, int @size);
  576. [DllImport(libavformat, EntryPoint = "avio_wl64", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  577. internal static extern void avio_wl64(AVIOContext* @s, ulong @val);
  578. [DllImport(libavformat, EntryPoint = "avio_wb64", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  579. internal static extern void avio_wb64(AVIOContext* @s, ulong @val);
  580. [DllImport(libavformat, EntryPoint = "avio_wl32", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  581. internal static extern void avio_wl32(AVIOContext* @s, uint @val);
  582. [DllImport(libavformat, EntryPoint = "avio_wb32", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  583. internal static extern void avio_wb32(AVIOContext* @s, uint @val);
  584. [DllImport(libavformat, EntryPoint = "avio_wl24", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  585. internal static extern void avio_wl24(AVIOContext* @s, uint @val);
  586. [DllImport(libavformat, EntryPoint = "avio_wb24", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  587. internal static extern void avio_wb24(AVIOContext* @s, uint @val);
  588. [DllImport(libavformat, EntryPoint = "avio_wl16", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  589. internal static extern void avio_wl16(AVIOContext* @s, uint @val);
  590. [DllImport(libavformat, EntryPoint = "avio_wb16", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  591. internal static extern void avio_wb16(AVIOContext* @s, uint @val);
  592. [DllImport(libavformat, EntryPoint = "avio_put_str", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  593. internal static extern int avio_put_str(AVIOContext* @s, [MarshalAs(UnmanagedType.LPStr)] string @str);
  594. [DllImport(libavformat, EntryPoint = "avio_put_str16le", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  595. internal static extern int avio_put_str16le(AVIOContext* @s, [MarshalAs(UnmanagedType.LPStr)] string @str);
  596. [DllImport(libavformat, EntryPoint = "avio_put_str16be", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  597. internal static extern int avio_put_str16be(AVIOContext* @s, [MarshalAs(UnmanagedType.LPStr)] string @str);
  598. [DllImport(libavformat, EntryPoint = "avio_write_marker", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  599. internal static extern void avio_write_marker(AVIOContext* @s, long @time, AVIODataMarkerType @type);
  600. [DllImport(libavformat, EntryPoint = "avio_seek", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  601. internal static extern long avio_seek(AVIOContext* @s, long @offset, int @whence);
  602. [DllImport(libavformat, EntryPoint = "avio_skip", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  603. internal static extern long avio_skip(AVIOContext* @s, long @offset);
  604. [DllImport(libavformat, EntryPoint = "avio_size", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  605. internal static extern long avio_size(AVIOContext* @s);
  606. [DllImport(libavformat, EntryPoint = "avio_feof", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  607. internal static extern int avio_feof(AVIOContext* @s);
  608. [DllImport(libavformat, EntryPoint = "url_feof", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  609. internal static extern int url_feof(AVIOContext* @s);
  610. [DllImport(libavformat, EntryPoint = "avio_printf", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  611. internal static extern int avio_printf(AVIOContext* @s, [MarshalAs(UnmanagedType.LPStr)] string @fmt);
  612. [DllImport(libavformat, EntryPoint = "avio_flush", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  613. internal static extern void avio_flush(AVIOContext* @s);
  614. [DllImport(libavformat, EntryPoint = "avio_read", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  615. internal static extern int avio_read(AVIOContext* @s, sbyte* @buf, int @size);
  616. [DllImport(libavformat, EntryPoint = "avio_r8", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  617. internal static extern int avio_r8(AVIOContext* @s);
  618. [DllImport(libavformat, EntryPoint = "avio_rl16", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  619. internal static extern uint avio_rl16(AVIOContext* @s);
  620. [DllImport(libavformat, EntryPoint = "avio_rl24", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  621. internal static extern uint avio_rl24(AVIOContext* @s);
  622. [DllImport(libavformat, EntryPoint = "avio_rl32", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  623. internal static extern uint avio_rl32(AVIOContext* @s);
  624. [DllImport(libavformat, EntryPoint = "avio_rl64", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  625. internal static extern ulong avio_rl64(AVIOContext* @s);
  626. [DllImport(libavformat, EntryPoint = "avio_rb16", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  627. internal static extern uint avio_rb16(AVIOContext* @s);
  628. [DllImport(libavformat, EntryPoint = "avio_rb24", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  629. internal static extern uint avio_rb24(AVIOContext* @s);
  630. [DllImport(libavformat, EntryPoint = "avio_rb32", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  631. internal static extern uint avio_rb32(AVIOContext* @s);
  632. [DllImport(libavformat, EntryPoint = "avio_rb64", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  633. internal static extern ulong avio_rb64(AVIOContext* @s);
  634. [DllImport(libavformat, EntryPoint = "avio_get_str", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  635. internal static extern int avio_get_str(AVIOContext* @pb, int @maxlen, IntPtr @buf, int @buflen);
  636. [DllImport(libavformat, EntryPoint = "avio_get_str16le", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  637. internal static extern int avio_get_str16le(AVIOContext* @pb, int @maxlen, IntPtr @buf, int @buflen);
  638. [DllImport(libavformat, EntryPoint = "avio_get_str16be", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  639. internal static extern int avio_get_str16be(AVIOContext* @pb, int @maxlen, IntPtr @buf, int @buflen);
  640. [DllImport(libavformat, EntryPoint = "avio_open", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  641. internal static extern int avio_open(AVIOContext** @s, [MarshalAs(UnmanagedType.LPStr)] string @url, int @flags);
  642. [DllImport(libavformat, EntryPoint = "avio_open2", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  643. internal static extern int avio_open2(AVIOContext** @s, [MarshalAs(UnmanagedType.LPStr)] string @url, int @flags, AVIOInterruptCB* @int_cb, AVDictionary** @options);
  644. [DllImport(libavformat, EntryPoint = "avio_close", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  645. internal static extern int avio_close(AVIOContext* @s);
  646. [DllImport(libavformat, EntryPoint = "avio_closep", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  647. internal static extern int avio_closep(AVIOContext** @s);
  648. [DllImport(libavformat, EntryPoint = "avio_open_dyn_buf", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  649. internal static extern int avio_open_dyn_buf(AVIOContext** @s);
  650. [DllImport(libavformat, EntryPoint = "avio_close_dyn_buf", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  651. internal static extern int avio_close_dyn_buf(AVIOContext* @s, sbyte** @pbuffer);
  652. [DllImport(libavformat, EntryPoint = "avio_enum_protocols", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  653. [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(ConstCharPtrMarshaler))]
  654. internal static extern string avio_enum_protocols(void** @opaque, int @output);
  655. [DllImport(libavformat, EntryPoint = "avio_pause", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  656. internal static extern int avio_pause(AVIOContext* @h, int @pause);
  657. [DllImport(libavformat, EntryPoint = "avio_seek_time", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  658. internal static extern long avio_seek_time(AVIOContext* @h, int @stream_index, long @timestamp, int @flags);
  659. [DllImport(libavformat, EntryPoint = "avio_read_to_bprint", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  660. internal static extern int avio_read_to_bprint(AVIOContext* @h, AVBPrint* @pb, ulong @max_size);
  661. [DllImport(libavformat, EntryPoint = "avio_accept", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  662. internal static extern int avio_accept(AVIOContext* @s, AVIOContext** @c);
  663. [DllImport(libavformat, EntryPoint = "avio_handshake", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  664. internal static extern int avio_handshake(AVIOContext* @c);
  665. [DllImport(libavformat, EntryPoint = "av_get_packet", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  666. internal static extern int av_get_packet(AVIOContext* @s, AVPacket* @pkt, int @size);
  667. [DllImport(libavformat, EntryPoint = "av_append_packet", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  668. internal static extern int av_append_packet(AVIOContext* @s, AVPacket* @pkt, int @size);
  669. [DllImport(libavformat, EntryPoint = "av_stream_get_r_frame_rate", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  670. internal static extern AVRational av_stream_get_r_frame_rate(AVStream* @s);
  671. [DllImport(libavformat, EntryPoint = "av_stream_set_r_frame_rate", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  672. internal static extern void av_stream_set_r_frame_rate(AVStream* @s, AVRational @r);
  673. [DllImport(libavformat, EntryPoint = "av_stream_get_parser", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  674. internal static extern AVCodecParserContext* av_stream_get_parser(AVStream* @s);
  675. [DllImport(libavformat, EntryPoint = "av_stream_get_recommended_encoder_configuration", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  676. internal static extern sbyte* av_stream_get_recommended_encoder_configuration(AVStream* @s);
  677. [DllImport(libavformat, EntryPoint = "av_stream_set_recommended_encoder_configuration", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  678. internal static extern void av_stream_set_recommended_encoder_configuration(AVStream* @s, IntPtr @configuration);
  679. [DllImport(libavformat, EntryPoint = "av_stream_get_end_pts", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  680. internal static extern long av_stream_get_end_pts(AVStream* @st);
  681. [DllImport(libavformat, EntryPoint = "av_format_get_probe_score", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  682. internal static extern int av_format_get_probe_score(AVFormatContext* @s);
  683. [DllImport(libavformat, EntryPoint = "av_format_get_video_codec", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  684. internal static extern AVCodec* av_format_get_video_codec(AVFormatContext* @s);
  685. [DllImport(libavformat, EntryPoint = "av_format_set_video_codec", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  686. internal static extern void av_format_set_video_codec(AVFormatContext* @s, AVCodec* @c);
  687. [DllImport(libavformat, EntryPoint = "av_format_get_audio_codec", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  688. internal static extern AVCodec* av_format_get_audio_codec(AVFormatContext* @s);
  689. [DllImport(libavformat, EntryPoint = "av_format_set_audio_codec", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  690. internal static extern void av_format_set_audio_codec(AVFormatContext* @s, AVCodec* @c);
  691. [DllImport(libavformat, EntryPoint = "av_format_get_subtitle_codec", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  692. internal static extern AVCodec* av_format_get_subtitle_codec(AVFormatContext* @s);
  693. [DllImport(libavformat, EntryPoint = "av_format_set_subtitle_codec", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  694. internal static extern void av_format_set_subtitle_codec(AVFormatContext* @s, AVCodec* @c);
  695. [DllImport(libavformat, EntryPoint = "av_format_get_data_codec", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  696. internal static extern AVCodec* av_format_get_data_codec(AVFormatContext* @s);
  697. [DllImport(libavformat, EntryPoint = "av_format_set_data_codec", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  698. internal static extern void av_format_set_data_codec(AVFormatContext* @s, AVCodec* @c);
  699. [DllImport(libavformat, EntryPoint = "av_format_get_metadata_header_padding", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  700. internal static extern int av_format_get_metadata_header_padding(AVFormatContext* @s);
  701. [DllImport(libavformat, EntryPoint = "av_format_set_metadata_header_padding", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  702. internal static extern void av_format_set_metadata_header_padding(AVFormatContext* @s, int @c);
  703. [DllImport(libavformat, EntryPoint = "av_format_get_opaque", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  704. internal static extern void* av_format_get_opaque(AVFormatContext* @s);
  705. [DllImport(libavformat, EntryPoint = "av_format_set_opaque", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  706. internal static extern void av_format_set_opaque(AVFormatContext* @s, void* @opaque);
  707. [DllImport(libavformat, EntryPoint = "av_format_get_control_message_cb", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  708. internal static extern av_format_control_message av_format_get_control_message_cb(AVFormatContext* @s);
  709. [DllImport(libavformat, EntryPoint = "av_format_set_control_message_cb", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  710. internal static extern void av_format_set_control_message_cb(AVFormatContext* @s, av_format_control_message @callback);
  711. [DllImport(libavformat, EntryPoint = "av_format_get_open_cb", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  712. internal static extern AVOpenCallback av_format_get_open_cb(AVFormatContext* @s);
  713. [DllImport(libavformat, EntryPoint = "av_format_set_open_cb", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  714. internal static extern void av_format_set_open_cb(AVFormatContext* @s, AVOpenCallback @callback);
  715. [DllImport(libavformat, EntryPoint = "av_format_inject_global_side_data", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  716. internal static extern void av_format_inject_global_side_data(AVFormatContext* @s);
  717. [DllImport(libavformat, EntryPoint = "av_fmt_ctx_get_duration_estimation_method", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  718. internal static extern AVDurationEstimationMethod av_fmt_ctx_get_duration_estimation_method(AVFormatContext* @ctx);
  719. [DllImport(libavformat, EntryPoint = "avformat_version", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  720. internal static extern uint avformat_version();
  721. [DllImport(libavformat, EntryPoint = "avformat_configuration", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  722. [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(ConstCharPtrMarshaler))]
  723. internal static extern string avformat_configuration();
  724. [DllImport(libavformat, EntryPoint = "avformat_license", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  725. [return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(ConstCharPtrMarshaler))]
  726. internal static extern string avformat_license();
  727. [DllImport(libavformat, EntryPoint = "av_register_all", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  728. internal static extern void av_register_all();
  729. [DllImport(libavformat, EntryPoint = "av_register_input_format", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  730. internal static extern void av_register_input_format(AVInputFormat* @format);
  731. [DllImport(libavformat, EntryPoint = "av_register_output_format", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  732. internal static extern void av_register_output_format(AVOutputFormat* @format);
  733. [DllImport(libavformat, EntryPoint = "avformat_network_init", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  734. internal static extern int avformat_network_init();
  735. [DllImport(libavformat, EntryPoint = "avformat_network_deinit", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  736. internal static extern int avformat_network_deinit();
  737. [DllImport(libavformat, EntryPoint = "av_iformat_next", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  738. internal static extern AVInputFormat* av_iformat_next(AVInputFormat* @f);
  739. [DllImport(libavformat, EntryPoint = "av_oformat_next", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  740. internal static extern AVOutputFormat* av_oformat_next(AVOutputFormat* @f);
  741. [DllImport(libavformat, EntryPoint = "avformat_alloc_context", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  742. internal static extern AVFormatContext* avformat_alloc_context();
  743. [DllImport(libavformat, EntryPoint = "avformat_free_context", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  744. internal static extern void avformat_free_context(AVFormatContext* @s);
  745. [DllImport(libavformat, EntryPoint = "avformat_get_class", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  746. internal static extern AVClass* avformat_get_class();
  747. [DllImport(libavformat, EntryPoint = "avformat_new_stream", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  748. internal static extern AVStream* avformat_new_stream(AVFormatContext* @s, AVCodec* @c);
  749. [DllImport(libavformat, EntryPoint = "av_stream_new_side_data", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  750. internal static extern sbyte* av_stream_new_side_data(AVStream* @stream, AVPacketSideDataType @type, int @size);
  751. [DllImport(libavformat, EntryPoint = "av_stream_get_side_data", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  752. internal static extern sbyte* av_stream_get_side_data(AVStream* @stream, AVPacketSideDataType @type, int* @size);
  753. [DllImport(libavformat, EntryPoint = "av_new_program", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  754. internal static extern AVProgram* av_new_program(AVFormatContext* @s, int @id);
  755. [DllImport(libavformat, EntryPoint = "avformat_alloc_output_context2", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  756. internal static extern int avformat_alloc_output_context2(AVFormatContext** @ctx, AVOutputFormat* @oformat, [MarshalAs(UnmanagedType.LPStr)] string @format_name, [MarshalAs(UnmanagedType.LPStr)] string @filename);
  757. [DllImport(libavformat, EntryPoint = "av_find_input_format", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  758. internal static extern AVInputFormat* av_find_input_format([MarshalAs(UnmanagedType.LPStr)] string @short_name);
  759. [DllImport(libavformat, EntryPoint = "av_probe_input_format", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  760. internal static extern AVInputFormat* av_probe_input_format(AVProbeData* @pd, int @is_opened);
  761. [DllImport(libavformat, EntryPoint = "av_probe_input_format2", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  762. internal static extern AVInputFormat* av_probe_input_format2(AVProbeData* @pd, int @is_opened, int* @score_max);
  763. [DllImport(libavformat, EntryPoint = "av_probe_input_format3", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  764. internal static extern AVInputFormat* av_probe_input_format3(AVProbeData* @pd, int @is_opened, int* @score_ret);
  765. [DllImport(libavformat, EntryPoint = "av_probe_input_buffer2", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  766. internal static extern int av_probe_input_buffer2(AVIOContext* @pb, AVInputFormat** @fmt, [MarshalAs(UnmanagedType.LPStr)] string @url, void* @logctx, uint @offset, uint @max_probe_size);
  767. [DllImport(libavformat, EntryPoint = "av_probe_input_buffer", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  768. internal static extern int av_probe_input_buffer(AVIOContext* @pb, AVInputFormat** @fmt, [MarshalAs(UnmanagedType.LPStr)] string @url, void* @logctx, uint @offset, uint @max_probe_size);
  769. [DllImport(libavformat, EntryPoint = "avformat_open_input", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  770. internal static extern int avformat_open_input(AVFormatContext** @ps, [MarshalAs(UnmanagedType.LPStr)] string @url, AVInputFormat* @fmt, AVDictionary** @options);
  771. [DllImport(libavformat, EntryPoint = "av_demuxer_open", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  772. internal static extern int av_demuxer_open(AVFormatContext* @ic);
  773. [DllImport(libavformat, EntryPoint = "avformat_find_stream_info", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  774. internal static extern int avformat_find_stream_info(AVFormatContext* @ic, AVDictionary** @options);
  775. [DllImport(libavformat, EntryPoint = "av_find_program_from_stream", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  776. internal static extern AVProgram* av_find_program_from_stream(AVFormatContext* @ic, AVProgram* @last, int @s);
  777. [DllImport(libavformat, EntryPoint = "av_program_add_stream_index", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  778. internal static extern void av_program_add_stream_index(AVFormatContext* @ac, int @progid, uint @idx);
  779. [DllImport(libavformat, EntryPoint = "av_find_best_stream", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  780. internal static extern int av_find_best_stream(AVFormatContext* @ic, AVMediaType @type, int @wanted_stream_nb, int @related_stream, AVCodec** @decoder_ret, int @flags);
  781. [DllImport(libavformat, EntryPoint = "av_read_frame", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  782. internal static extern int av_read_frame(AVFormatContext* @s, AVPacket* @pkt);
  783. [DllImport(libavformat, EntryPoint = "av_seek_frame", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  784. internal static extern int av_seek_frame(AVFormatContext* @s, int @stream_index, long @timestamp, int @flags);
  785. [DllImport(libavformat, EntryPoint = "avformat_seek_file", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  786. internal static extern int avformat_seek_file(AVFormatContext* @s, int @stream_index, long @min_ts, long @ts, long @max_ts, int @flags);
  787. [DllImport(libavformat, EntryPoint = "avformat_flush", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  788. internal static extern int avformat_flush(AVFormatContext* @s);
  789. [DllImport(libavformat, EntryPoint = "av_read_play", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  790. internal static extern int av_read_play(AVFormatContext* @s);
  791. [DllImport(libavformat, EntryPoint = "av_read_pause", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  792. internal static extern int av_read_pause(AVFormatContext* @s);
  793. [DllImport(libavformat, EntryPoint = "avformat_close_input", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  794. internal static extern void avformat_close_input(AVFormatContext** @s);
  795. [DllImport(libavformat, EntryPoint = "avformat_write_header", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  796. internal static extern int avformat_write_header(AVFormatContext* @s, AVDictionary** @options);
  797. [DllImport(libavformat, EntryPoint = "avformat_init_output", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  798. internal static extern int avformat_init_output(AVFormatContext* @s, AVDictionary** @options);
  799. [DllImport(libavformat, EntryPoint = "av_write_frame", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  800. internal static extern int av_write_frame(AVFormatContext* @s, AVPacket* @pkt);
  801. [DllImport(libavformat, EntryPoint = "av_interleaved_write_frame", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  802. internal static extern int av_interleaved_write_frame(AVFormatContext* @s, AVPacket* @pkt);
  803. [DllImport(libavformat, EntryPoint = "av_write_uncoded_frame", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  804. internal static extern int av_write_uncoded_frame(AVFormatContext* @s, int @stream_index, AVFrame* @frame);
  805. [DllImport(libavformat, EntryPoint = "av_interleaved_write_uncoded_frame", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  806. internal static extern int av_interleaved_write_uncoded_frame(AVFormatContext* @s, int @stream_index, AVFrame* @frame);
  807. [DllImport(libavformat, EntryPoint = "av_write_uncoded_frame_query", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  808. internal static extern int av_write_uncoded_frame_query(AVFormatContext* @s, int @stream_index);
  809. [DllImport(libavformat, EntryPoint = "av_write_trailer", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  810. internal static extern int av_write_trailer(AVFormatContext* @s);
  811. [DllImport(libavformat, EntryPoint = "av_guess_format", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  812. internal static extern AVOutputFormat* av_guess_format([MarshalAs(UnmanagedType.LPStr)] string @short_name, [MarshalAs(UnmanagedType.LPStr)] string @filename, [MarshalAs(UnmanagedType.LPStr)] string @mime_type);
  813. [DllImport(libavformat, EntryPoint = "av_guess_codec", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  814. internal static extern AvCodecId av_guess_codec(AVOutputFormat* @fmt, [MarshalAs(UnmanagedType.LPStr)] string @short_name, [MarshalAs(UnmanagedType.LPStr)] string @filename, [MarshalAs(UnmanagedType.LPStr)] string @mime_type, AVMediaType @type);
  815. [DllImport(libavformat, EntryPoint = "av_get_output_timestamp", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  816. internal static extern int av_get_output_timestamp(AVFormatContext* @s, int @stream, long* @dts, long* @wall);
  817. [DllImport(libavformat, EntryPoint = "av_hex_dump", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  818. internal static extern void av_hex_dump(_iobuf* @f, sbyte* @buf, int @size);
  819. [DllImport(libavformat, EntryPoint = "av_hex_dump_log", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  820. internal static extern void av_hex_dump_log(void* @avcl, int @level, sbyte* @buf, int @size);
  821. [DllImport(libavformat, EntryPoint = "av_pkt_dump2", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  822. internal static extern void av_pkt_dump2(_iobuf* @f, AVPacket* @pkt, int @dump_payload, AVStream* @st);
  823. [DllImport(libavformat, EntryPoint = "av_pkt_dump_log2", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  824. internal static extern void av_pkt_dump_log2(void* @avcl, int @level, AVPacket* @pkt, int @dump_payload, AVStream* @st);
  825. [DllImport(libavformat, EntryPoint = "av_codec_get_id", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  826. internal static extern AvCodecId av_codec_get_id(AVCodecTag** @tags, uint @tag);
  827. [DllImport(libavformat, EntryPoint = "av_codec_get_tag", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  828. internal static extern uint av_codec_get_tag(AVCodecTag** @tags, AvCodecId @id);
  829. [DllImport(libavformat, EntryPoint = "av_codec_get_tag2", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  830. internal static extern int av_codec_get_tag2(AVCodecTag** @tags, AvCodecId @id, uint* @tag);
  831. [DllImport(libavformat, EntryPoint = "av_find_default_stream_index", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  832. internal static extern int av_find_default_stream_index(AVFormatContext* @s);
  833. [DllImport(libavformat, EntryPoint = "av_index_search_timestamp", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  834. internal static extern int av_index_search_timestamp(AVStream* @st, long @timestamp, int @flags);
  835. [DllImport(libavformat, EntryPoint = "av_add_index_entry", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  836. internal static extern int av_add_index_entry(AVStream* @st, long @pos, long @timestamp, int @size, int @distance, int @flags);
  837. [DllImport(libavformat, EntryPoint = "av_url_split", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  838. internal static extern void av_url_split(IntPtr @proto, int @proto_size, IntPtr @authorization, int @authorization_size, IntPtr @hostname, int @hostname_size, int* @port_ptr, IntPtr @path, int @path_size, [MarshalAs(UnmanagedType.LPStr)] string @url);
  839. [DllImport(libavformat, EntryPoint = "av_dump_format", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  840. internal static extern void av_dump_format(AVFormatContext* @ic, int @index, [MarshalAs(UnmanagedType.LPStr)] string @url, int @is_output);
  841. [DllImport(libavformat, EntryPoint = "av_get_frame_filename2", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  842. internal static extern int av_get_frame_filename2(IntPtr @buf, int @buf_size, [MarshalAs(UnmanagedType.LPStr)] string @path, int @number, int @flags);
  843. [DllImport(libavformat, EntryPoint = "av_get_frame_filename", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  844. internal static extern int av_get_frame_filename(IntPtr @buf, int @buf_size, [MarshalAs(UnmanagedType.LPStr)] string @path, int @number);
  845. [DllImport(libavformat, EntryPoint = "av_filename_number_test", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  846. internal static extern int av_filename_number_test([MarshalAs(UnmanagedType.LPStr)] string @filename);
  847. [DllImport(libavformat, EntryPoint = "av_sdp_create", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  848. internal static extern int av_sdp_create(AVFormatContext** @ac, int @n_files, IntPtr @buf, int @size);
  849. [DllImport(libavformat, EntryPoint = "av_match_ext", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  850. internal static extern int av_match_ext([MarshalAs(UnmanagedType.LPStr)] string @filename, [MarshalAs(UnmanagedType.LPStr)] string @extensions);
  851. [DllImport(libavformat, EntryPoint = "avformat_query_codec", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  852. internal static extern int avformat_query_codec(AVOutputFormat* @ofmt, AvCodecId @codec_id, int @std_compliance);
  853. [DllImport(libavformat, EntryPoint = "avformat_get_riff_video_tags", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  854. internal static extern AVCodecTag* avformat_get_riff_video_tags();
  855. [DllImport(libavformat, EntryPoint = "avformat_get_riff_audio_tags", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  856. internal static extern AVCodecTag* avformat_get_riff_audio_tags();
  857. [DllImport(libavformat, EntryPoint = "avformat_get_mov_video_tags", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  858. internal static extern AVCodecTag* avformat_get_mov_video_tags();
  859. [DllImport(libavformat, EntryPoint = "avformat_get_mov_audio_tags", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  860. internal static extern AVCodecTag* avformat_get_mov_audio_tags();
  861. [DllImport(libavformat, EntryPoint = "av_guess_sample_aspect_ratio", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  862. internal static extern AVRational av_guess_sample_aspect_ratio(AVFormatContext* @format, AVStream* @stream, AVFrame* @frame);
  863. [DllImport(libavformat, EntryPoint = "av_guess_frame_rate", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  864. internal static extern AVRational av_guess_frame_rate(AVFormatContext* @ctx, AVStream* @stream, AVFrame* @frame);
  865. [DllImport(libavformat, EntryPoint = "avformat_match_stream_specifier", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  866. internal static extern int avformat_match_stream_specifier(AVFormatContext* @s, AVStream* @st, [MarshalAs(UnmanagedType.LPStr)] string @spec);
  867. [DllImport(libavformat, EntryPoint = "avformat_queue_attached_pictures", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  868. internal static extern int avformat_queue_attached_pictures(AVFormatContext* @s);
  869. [DllImport(libavformat, EntryPoint = "av_apply_bitstream_filters", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  870. internal static extern int av_apply_bitstream_filters(AVCodecContext* @codec, AVPacket* @pkt, AVBitStreamFilterContext* @bsfc);
  871. [DllImport(libavformat, EntryPoint = "avformat_transfer_internal_stream_timing_info", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  872. internal static extern int avformat_transfer_internal_stream_timing_info(AVOutputFormat* @ofmt, AVStream* @ost, AVStream* @ist, AVTimebaseSource @copy_tb);
  873. [DllImport(libavformat, EntryPoint = "av_stream_get_codec_timebase", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
  874. internal static extern AVRational av_stream_get_codec_timebase(AVStream* @st);
  875. }