You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Enhance audio/video processing and CI configuration
Updated CI configuration to use .NET 6.0.x and improved artifact upload actions. Incremented version number in `Directory.Build.props` to 7.1.1.
Introduced new delegates and structures in `Delegates.g.cs` for AVFilter functionality, and expanded `AVChannel` enum for additional audio channel types. Added `AVCodecConfig` enum for codec parameters and deprecated certain fields in `AVCodec`.
Enhanced `ffmpeg` facade with new functions for side data and mastering display metadata. Expanded `AVPacketSideDataType` and `AVOptionType` enums for improved metadata handling.
Modified `AVCodecContext` to include a duration probe size field and updated `AVCodecID` enum with new codec IDs for LC3 and LCEVC.
Versioning information in `version.h` and `version_major.h` was updated, and XvMC support was deprecated in `xvmc.h`.
* Add readme
* add read me to poackages
---------
Co-authored-by: Ruslan Balanukhin <[email protected]>
Copy file name to clipboardExpand all lines: FFmpeg.AutoGen.Abstractions/generated/Enums.g.cs
+75-6Lines changed: 75 additions & 6 deletions
Original file line number
Diff line number
Diff line change
@@ -101,6 +101,14 @@ public enum AVChannel : int
101
101
@AV_CHAN_BOTTOM_FRONT_LEFT=39,
102
102
/// <summary>See above.</summary>
103
103
@AV_CHAN_BOTTOM_FRONT_RIGHT=40,
104
+
/// <summary>+90 degrees, Lss, SiL</summary>
105
+
@AV_CHAN_SIDE_SURROUND_LEFT=41,
106
+
/// <summary>-90 degrees, Rss, SiR</summary>
107
+
@AV_CHAN_SIDE_SURROUND_RIGHT=42,
108
+
/// <summary>+110 degrees, Lvs, TpLS</summary>
109
+
@AV_CHAN_TOP_SURROUND_LEFT=43,
110
+
/// <summary>-110 degrees, Rvs, TpRS</summary>
111
+
@AV_CHAN_TOP_SURROUND_RIGHT=44,
104
112
/// <summary>Channel is empty can be safely skipped.</summary>
105
113
@AV_CHAN_UNUSED=512,
106
114
/// <summary>Channel contains data, but its position is unknown.</summary>
@@ -165,6 +173,24 @@ public enum AVClassCategory : int
165
173
@AV_CLASS_CATEGORY_NB=46,
166
174
}
167
175
176
+
publicenumAVCodecConfig:int
177
+
{
178
+
/// <summary>AVPixelFormat, terminated by AV_PIX_FMT_NONE</summary>
179
+
@AV_CODEC_CONFIG_PIX_FORMAT=0,
180
+
/// <summary>AVRational, terminated by {0, 0}</summary>
181
+
@AV_CODEC_CONFIG_FRAME_RATE=1,
182
+
/// <summary>int, terminated by 0</summary>
183
+
@AV_CODEC_CONFIG_SAMPLE_RATE=2,
184
+
/// <summary>AVSampleFormat, terminated by AV_SAMPLE_FMT_NONE</summary>
185
+
@AV_CODEC_CONFIG_SAMPLE_FORMAT=3,
186
+
/// <summary>AVChannelLayout, terminated by {0}</summary>
187
+
@AV_CODEC_CONFIG_CHANNEL_LAYOUT=4,
188
+
/// <summary>AVColorRange, terminated by AVCOL_RANGE_UNSPECIFIED</summary>
189
+
@AV_CODEC_CONFIG_COLOR_RANGE=5,
190
+
/// <summary>AVColorSpace, terminated by AVCOL_SPC_UNSPECIFIED</summary>
191
+
@AV_CODEC_CONFIG_COLOR_SPACE=6,
192
+
}
193
+
168
194
/// <summary>Identify the syntax and semantics of the bitstream. The principle is roughly: Two decoders with the same ID can decode the same streams. Two encoders with the same ID can encode compatible streams. There may be slight deviations from the principle due to implementation details.</summary>
169
195
publicenumAVCodecID:int
170
196
{
@@ -651,6 +677,7 @@ public enum AVCodecID : int
651
677
@AV_CODEC_ID_AC4=86119,
652
678
@AV_CODEC_ID_OSQ=86120,
653
679
@AV_CODEC_ID_QOA=86121,
680
+
@AV_CODEC_ID_LC3=86122,
654
681
/// <summary>A dummy ID pointing at the start of subtitle codecs.</summary>
655
682
@AV_CODEC_ID_FIRST_SUBTITLE=94208,
656
683
@AV_CODEC_ID_DVD_SUBTITLE=94208,
@@ -695,6 +722,7 @@ public enum AVCodecID : int
695
722
@AV_CODEC_ID_TIMED_ID3=98313,
696
723
@AV_CODEC_ID_BIN_DATA=98314,
697
724
@AV_CODEC_ID_SMPTE_2038=98315,
725
+
@AV_CODEC_ID_LCEVC=98316,
698
726
/// <summary>codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it</summary>
699
727
@AV_CODEC_ID_PROBE=102400,
700
728
/// <summary>_FAKE_ codec to indicate a raw MPEG-2 TS stream (only used by libavformat)</summary>
@@ -790,8 +818,14 @@ public enum AVColorSpace : int
790
818
@AVCOL_SPC_CHROMA_DERIVED_CL=13,
791
819
/// <summary>ITU-R BT.2100-0, ICtCp</summary>
792
820
@AVCOL_SPC_ICTCP=14,
821
+
/// <summary>SMPTE ST 2128, IPT-C2</summary>
822
+
@AVCOL_SPC_IPT_C2=15,
823
+
/// <summary>YCgCo-R, even addition of bits</summary>
824
+
@AVCOL_SPC_YCGCO_RE=16,
825
+
/// <summary>YCgCo-R, odd addition of bits</summary>
826
+
@AVCOL_SPC_YCGCO_RO=17,
793
827
/// <summary>Not part of ABI</summary>
794
-
@AVCOL_SPC_NB=15,
828
+
@AVCOL_SPC_NB=18,
795
829
}
796
830
797
831
/// <summary>Color Transfer Characteristic. These values match the ones defined by ISO/IEC 23091-2_2019 subclause 8.2.</summary>
@@ -966,6 +1000,10 @@ public enum AVFrameSideDataType : int
966
1000
@AV_FRAME_DATA_AMBIENT_VIEWING_ENVIRONMENT=26,
967
1001
/// <summary>Provide encoder-specific hinting information about changed/unchanged portions of a frame. It can be used to pass information about which macroblocks can be skipped because they didn't change from the corresponding ones in the previous frame. This could be useful for applications which know this information in advance to speed up encoding.</summary>
968
1002
@AV_FRAME_DATA_VIDEO_HINT=27,
1003
+
/// <summary>Raw LCEVC payload data, as a uint8_t array, with NAL emulation bytes intact.</summary>
1004
+
@AV_FRAME_DATA_LCEVC=28,
1005
+
/// <summary>This side data must be associated with a video frame. The presence of this side data indicates that the video stream is composed of multiple views (e.g. stereoscopic 3D content, cf. H.264 Annex H or H.265 Annex G). The data is an int storing the view ID.</summary>
1006
+
@AV_FRAME_DATA_VIEW_ID=29,
969
1007
}
970
1008
971
1009
/// <summary>Option for overlapping elliptical pixel selectors in an image.</summary>
@@ -1060,31 +1098,49 @@ public enum AVMediaType : int
1060
1098
@AVMEDIA_TYPE_NB=5,
1061
1099
}
1062
1100
1063
-
/// <summary>@{ AVOptions provide a generic system to declare options on arbitrary structs ("objects"). An option can have a help text, a type and a range of possible values. Options may then be enumerated, read and written to.</summary>
1101
+
/// <summary>An option type determines: - for native access, the underlying C type of the field that an AVOption refers to; - for foreign access, the semantics of accessing the option through this API, e.g. which av_opt_get_*() and av_opt_set_*() functions can be called, or what format will av_opt_get()/av_opt_set() expect/produce.</summary>
1064
1102
publicenumAVOptionType:int
1065
1103
{
1104
+
/// <summary>Underlying C type is unsigned int.</summary>
1066
1105
@AV_OPT_TYPE_FLAGS=1,
1106
+
/// <summary>Underlying C type is int.</summary>
1067
1107
@AV_OPT_TYPE_INT=2,
1108
+
/// <summary>Underlying C type is int64_t.</summary>
1068
1109
@AV_OPT_TYPE_INT64=3,
1110
+
/// <summary>Underlying C type is double.</summary>
1069
1111
@AV_OPT_TYPE_DOUBLE=4,
1112
+
/// <summary>Underlying C type is float.</summary>
1070
1113
@AV_OPT_TYPE_FLOAT=5,
1114
+
/// <summary>Underlying C type is a uint8_t* that is either NULL or points to a C string allocated with the av_malloc() family of functions.</summary>
1071
1115
@AV_OPT_TYPE_STRING=6,
1116
+
/// <summary>Underlying C type is AVRational.</summary>
1072
1117
@AV_OPT_TYPE_RATIONAL=7,
1073
-
/// <summary>offset must point to a pointer immediately followed by an int for the length</summary>
1118
+
/// <summary>Underlying C type is a uint8_t* that is either NULL or points to an array allocated with the av_malloc() family of functions. The pointer is immediately followed by an int containing the array length in bytes.</summary>
1074
1119
@AV_OPT_TYPE_BINARY=8,
1120
+
/// <summary>Underlying C type is AVDictionary*.</summary>
1075
1121
@AV_OPT_TYPE_DICT=9,
1122
+
/// <summary>Underlying C type is uint64_t.</summary>
1076
1123
@AV_OPT_TYPE_UINT64=10,
1124
+
/// <summary>Special option type for declaring named constants. Does not correspond to an actual field in the object, offset must be 0.</summary>
1077
1125
@AV_OPT_TYPE_CONST=11,
1078
-
/// <summary>offset must point to two consecutive integers</summary>
1126
+
/// <summary>Underlying C type is two consecutive integers.</summary>
1079
1127
@AV_OPT_TYPE_IMAGE_SIZE=12,
1128
+
/// <summary>Underlying C type is enum AVPixelFormat.</summary>
1080
1129
@AV_OPT_TYPE_PIXEL_FMT=13,
1130
+
/// <summary>Underlying C type is enum AVSampleFormat.</summary>
1081
1131
@AV_OPT_TYPE_SAMPLE_FMT=14,
1082
-
/// <summary>offset must point to AVRational</summary>
1132
+
/// <summary>Underlying C type is AVRational.</summary>
1083
1133
@AV_OPT_TYPE_VIDEO_RATE=15,
1134
+
/// <summary>Underlying C type is int64_t.</summary>
1084
1135
@AV_OPT_TYPE_DURATION=16,
1136
+
/// <summary>Underlying C type is uint8_t[4].</summary>
1085
1137
@AV_OPT_TYPE_COLOR=17,
1138
+
/// <summary>Underlying C type is int.</summary>
1086
1139
@AV_OPT_TYPE_BOOL=18,
1140
+
/// <summary>Underlying C type is AVChannelLayout.</summary>
1087
1141
@AV_OPT_TYPE_CHLAYOUT=19,
1142
+
/// <summary>Underlying C type is unsigned int.</summary>
1143
+
@AV_OPT_TYPE_UINT=20,
1088
1144
/// <summary>May be combined with another regular option type to declare an array option.</summary>
1089
1145
@AV_OPT_TYPE_FLAG_ARRAY=65536,
1090
1146
}
@@ -1164,8 +1220,12 @@ public enum AVPacketSideDataType : int
1164
1220
@AV_PKT_DATA_IAMF_RECON_GAIN_INFO_PARAM=34,
1165
1221
/// <summary>Ambient viewing environment metadata, as defined by H.274. This metadata should be associated with a video stream and contains data in the form of the AVAmbientViewingEnvironment struct.</summary>
1166
1222
@AV_PKT_DATA_AMBIENT_VIEWING_ENVIRONMENT=35,
1223
+
/// <summary>The number of pixels to discard from the top/bottom/left/right border of the decoded frame to obtain the sub-rectangle intended for presentation.</summary>
1224
+
@AV_PKT_DATA_FRAME_CROPPING=36,
1225
+
/// <summary>Raw LCEVC payload data, as a uint8_t array, with NAL emulation bytes intact.</summary>
1226
+
@AV_PKT_DATA_LCEVC=37,
1167
1227
/// <summary>The number of side data types. This is not part of the public API/ABI in the sense that it may change when new side data types are added. This must stay the last enum value. If its value becomes huge, some code using it needs to be updated as it assumes it to be smaller than other limits.</summary>
1168
-
@AV_PKT_DATA_NB=36,
1228
+
@AV_PKT_DATA_NB=38,
1169
1229
}
1170
1230
1171
1231
/// <summary>@{</summary>
@@ -1726,12 +1786,21 @@ public enum AVSideDataParamChangeFlags : int
1726
1786
@AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS=8,
1727
1787
}
1728
1788
1789
+
publicenumAVSideDataProps:int
1790
+
{
1791
+
/// <summary>The side data type can be used in stream-global structures. Side data types without this property are only meaningful on per-frame basis.</summary>
1792
+
@AV_SIDE_DATA_PROP_GLOBAL=1,
1793
+
/// <summary>Multiple instances of this side data type can be meaningfully present in a single side data array.</summary>
Copy file name to clipboardExpand all lines: FFmpeg.AutoGen.Abstractions/generated/Structs.g.cs
+33-28Lines changed: 33 additions & 28 deletions
Original file line number
Diff line number
Diff line change
@@ -165,13 +165,13 @@ public unsafe partial struct AVCodec
165
165
publicint@capabilities;
166
166
/// <summary>maximum value for lowres supported by the decoder</summary>
167
167
publicbyte@max_lowres;
168
-
/// <summary>array of supported framerates, or NULL if any, array is terminated by {0,0}</summary>
168
+
[Obsolete("use avcodec_get_supported_config()")]
169
169
publicAVRational*@supported_framerates;
170
-
/// <summary>array of supported pixel formats, or NULL if unknown, array is terminated by -1</summary>
170
+
[Obsolete("use avcodec_get_supported_config()")]
171
171
publicAVPixelFormat*@pix_fmts;
172
-
/// <summary>array of supported audio samplerates, or NULL if unknown, array is terminated by 0</summary>
172
+
[Obsolete("use avcodec_get_supported_config()")]
173
173
publicint*@supported_samplerates;
174
-
/// <summary>array of supported sample formats, or NULL if unknown, array is terminated by -1</summary>
174
+
[Obsolete("use avcodec_get_supported_config()")]
175
175
publicAVSampleFormat*@sample_fmts;
176
176
/// <summary>AVClass for the private context</summary>
177
177
publicAVClass*@priv_class;
@@ -180,6 +180,7 @@ public unsafe partial struct AVCodec
180
180
/// <summary>Group name of the codec implementation. This is a short symbolic name of the wrapper backing this codec. A wrapper uses some kind of external implementation for the codec, such as an external library, or a codec implementation provided by the OS or the hardware. If this field is NULL, this is a builtin, libavcodec native codec. If non-NULL, this will be the suffix in AVCodec.name in most cases (usually AVCodec.name will be of the form "<codec_name>_<wrapper_name>").</summary>
181
181
publicbyte*@wrapper_name;
182
182
/// <summary>Array of supported channel layouts, terminated with a zeroed layout.</summary>
183
+
[Obsolete("use avcodec_get_supported_config()")]
183
184
publicAVChannelLayout*@ch_layouts;
184
185
}
185
186
@@ -870,6 +871,9 @@ public unsafe partial struct AVFilter_formats
870
871
/// <summary>Query formats supported by the filter on its inputs and outputs.</summary>
871
872
[FieldOffset(0)]
872
873
public_query_func_func@query_func;
874
+
/// <summary>Same as query_func(), except this function writes the results into provided arrays.</summary>
875
+
[FieldOffset(0)]
876
+
public_query_func2_func@query_func2;
873
877
/// <summary>A pointer to an array of admissible pixel formats delimited by AV_PIX_FMT_NONE. The generic code will use this list to indicate that this filter supports each of these pixel formats, provided that all inputs and outputs use the same pixel format.</summary>
874
878
[FieldOffset(0)]
875
879
publicAVPixelFormat*@pixels_list;
@@ -1031,30 +1035,6 @@ public unsafe partial struct AVFilterLink
1031
1035
publicAVFilterFormatsConfig@incfg;
1032
1036
/// <summary>Lists of supported formats / etc. supported by the output filter.</summary>
1033
1037
publicAVFilterFormatsConfig@outcfg;
1034
-
/// <summary>Graph the filter belongs to.</summary>
1035
-
publicAVFilterGraph*@graph;
1036
-
/// <summary>Current timestamp of the link, as defined by the most recent frame(s), in link time_base units.</summary>
1037
-
publiclong@current_pts;
1038
-
/// <summary>Current timestamp of the link, as defined by the most recent frame(s), in AV_TIME_BASE units.</summary>
1039
-
publiclong@current_pts_us;
1040
-
/// <summary>Frame rate of the stream on the link, or 1/0 if unknown or variable; if left to 0/0, will be automatically copied from the first input of the source filter if it exists.</summary>
1041
-
publicAVRational@frame_rate;
1042
-
/// <summary>Minimum number of samples to filter at once. If filter_frame() is called with fewer samples, it will accumulate them in fifo. This field and the related ones must not be changed after filtering has started. If 0, all related fields are ignored.</summary>
1043
-
publicint@min_samples;
1044
-
/// <summary>Maximum number of samples to filter at once. If filter_frame() is called with more samples, it will split them.</summary>
1045
-
publicint@max_samples;
1046
-
/// <summary>Number of past frames sent through the link.</summary>
1047
-
publiclong@frame_count_in;
1048
-
/// <summary>Number of past frames sent through the link.</summary>
1049
-
publiclong@frame_count_out;
1050
-
/// <summary>Number of past samples sent through the link.</summary>
1051
-
publiclong@sample_count_in;
1052
-
/// <summary>Number of past samples sent through the link.</summary>
1053
-
publiclong@sample_count_out;
1054
-
/// <summary>True if a frame is currently wanted on the output of this filter. Set when ff_request_frame() is called by the output, cleared when a frame is filtered.</summary>
1055
-
publicint@frame_wanted_out;
1056
-
/// <summary>For hwaccel pixel formats, this should be a reference to the AVHWFramesContext describing the frames.</summary>
1057
-
publicAVBufferRef*@hw_frames_ctx;
1058
1038
}
1059
1039
1060
1040
/// <summary>Parameters of a filter's input or output pad.</summary>
@@ -1223,6 +1203,8 @@ public unsafe partial struct AVFormatContext
1223
1203
publicAVFormatContext_io_open_func@io_open;
1224
1204
/// <summary>A callback for closing the streams opened with AVFormatContext.io_open().</summary>
1225
1205
publicAVFormatContext_io_close2_func@io_close2;
1206
+
/// <summary>Maximum number of bytes read from input in order to determine stream durations when using estimate_timings_from_pts in avformat_find_stream_info(). Demuxing only, set by the caller before avformat_find_stream_info(). Can be set to 0 to let avformat choose using a heuristic.</summary>
1207
+
publiclong@duration_probesize;
1226
1208
}
1227
1209
1228
1210
/// <summary>This structure describes decoded (raw) audio or video data.</summary>
@@ -1841,6 +1823,15 @@ public unsafe partial struct AVRegionOfInterest
1841
1823
publicAVRational@qoffset;
1842
1824
}
1843
1825
1826
+
/// <summary>This struct describes the properties of a side data type. Its instance corresponding to a given type can be obtained from av_frame_side_data_desc().</summary>
1827
+
publicunsafepartialstructAVSideDataDescriptor
1828
+
{
1829
+
/// <summary>Human-readable side data description.</summary>
1830
+
publicbyte*@name;
1831
+
/// <summary>Side data property flags, a combination of AVSideDataProps values.</summary>
1832
+
publicuint@props;
1833
+
}
1834
+
1844
1835
/// <summary>Stream structure. New fields can be added to the end with minor version bumps. Removal, reordering and changes to existing fields require a major version bump. sizeof(AVStream) must not be used outside libav*.</summary>
1845
1836
publicunsafepartialstructAVStream
1846
1837
{
@@ -1918,6 +1909,20 @@ public unsafe partial struct AVStreamGroup_params
/// <summary>AVStreamGroupLCEVC is meant to define the relation between video streams and a data stream containing LCEVC enhancement layer NALUs.</summary>
1917
+
publicunsafepartialstructAVStreamGroupLCEVC
1918
+
{
1919
+
publicAVClass*@av_class;
1920
+
/// <summary>Index of the LCEVC data stream in AVStreamGroup.</summary>
1921
+
publicuint@lcevc_index;
1922
+
/// <summary>Width of the final stream for presentation.</summary>
1923
+
publicint@width;
1924
+
/// <summary>Height of the final image for presentation.</summary>
1925
+
publicint@height;
1921
1926
}
1922
1927
1923
1928
/// <summary>AVStreamGroupTileGrid holds information on how to combine several independent images on a single canvas for presentation.</summary>
0 commit comments