diff --git a/avcodec/avcodec.go b/avcodec/avcodec.go index 60c291f..318c866 100644 --- a/avcodec/avcodec.go +++ b/avcodec/avcodec.go @@ -22,697 +22,250 @@ import ( ) type ( - AVBitStreamFilter C.struct_AVBitStreamFilter - AVBitStreamFilterContext C.struct_AVBitStreamFilterContext - AVClass C.struct_AVClass - AVCodec C.struct_AVCodec - AVCodecContext C.struct_AVCodecContext - AVCodecDescriptor C.struct_AVCodecDescriptor - AVCodecParser C.struct_AVCodecParser - AVCodecParserContext C.struct_AVCodecParserContext - AVDictionary C.struct_AVDictionary - AVFrame C.struct_AVFrame - AVHWAccel C.struct_AVHWAccel - AVPacket C.struct_AVPacket - AVPacketSideData C.struct_AVPacketSideData - AVPanScan C.struct_AVPanScan - AVPicture C.struct_AVPicture - AVProfile C.struct_AVProfile - AVRational C.struct_AVRational - AVSubtitle C.struct_AVSubtitle - AVSubtitleRect C.struct_AVSubtitleRect + AvBitStreamFilter C.struct_AVBitStreamFilter + AvBitStreamFilterContext C.struct_AVBitStreamFilterContext + AvClass C.struct_AVClass + AvCodec C.struct_AVCodec + AvCodecContext C.struct_AVCodecContext + AvCodecDescriptor C.struct_AVCodecDescriptor + AvCodecParser C.struct_AVCodecParser + AvCodecParserContext C.struct_AVCodecParserContext + AvDictionary C.struct_AVDictionary + AvFrame C.struct_AVFrame + AvHWAccel C.struct_AVHWAccel + AvPacket C.struct_AVPacket + AvPacketSideData C.struct_AVPacketSideData + AvPanScan C.struct_AVPanScan + AvPicture C.struct_AVPicture + AvProfile C.struct_AVProfile + AvRational C.struct_AVRational + AvSubtitle C.struct_AVSubtitle + AvSubtitleRect C.struct_AVSubtitleRect RcOverride C.struct_RcOverride - AVBufferRef C.struct_AVBufferRef - AVAudioServiceType C.enum_AVAudioServiceType - AVChromaLocation C.enum_AVChromaLocation - AVCodecID C.enum_AVCodecID - AVColorPrimaries C.enum_AVColorPrimaries - AVColorRange C.enum_AVColorRange - AVColorSpace C.enum_AVColorSpace - AVColorTransferCharacteristic C.enum_AVColorTransferCharacteristic - AVDiscard C.enum_AVDiscard - AVFieldOrder C.enum_AVFieldOrder - AVMediaType C.enum_AVMediaType - AVPacketSideDataType C.enum_AVPacketSideDataType - AVPixelFormat C.enum_AVPixelFormat - AVSampleFormat C.enum_AVSampleFormat + AvBufferRef C.struct_AVBufferRef + AvAudioServiceType C.enum_AVAudioServiceType + AvChromaLocation C.enum_AVChromaLocation + AvCodecId C.enum_AVCodecID + AvColorPrimaries C.enum_AVColorPrimaries + AvColorRange C.enum_AVColorRange + AvColorSpace C.enum_AVColorSpace + AvColorTransferCharacteristic C.enum_AVColorTransferCharacteristic + AvDiscard C.enum_AVDiscard + AvFieldOrder C.enum_AVFieldOrder + AvMediaType C.enum_AVMediaType + AvPacketSideDataType C.enum_AVPacketSideDataType + AvPixelFormat C.enum_AVPixelFormat + AvSampleFormat C.enum_AVSampleFormat ) -//AVRational av_codec_get_pkt_timebase (const AVCodecContext *avctx) -func Av_codec_get_pkt_timebase(ctxt *AVCodecContext) AVRational { - return (AVRational)(C.av_codec_get_pkt_timebase((*C.struct_AVCodecContext)(ctxt))) -} - -//void av_codec_set_pkt_timebase (AVCodecContext *avctx, AVRational val) -func Av_codec_set_pkt_timebase(ctxt *AVCodecContext, r AVRational) { - C.av_codec_set_pkt_timebase((*C.struct_AVCodecContext)(ctxt), (C.struct_AVRational)(r)) -} - -//const AVCodecDescriptor * av_codec_get_codec_descriptor (const AVCodecContext *avctx) -func Av_codec_get_codec_descriptor(ctxt *AVCodecContext) *AVCodecDescriptor { - return (*AVCodecDescriptor)(C.av_codec_get_codec_descriptor((*C.struct_AVCodecContext)(ctxt))) -} - -//void av_codec_set_codec_descriptor (AVCodecContext *avctx, const AVCodecDescriptor *desc) -func Av_codec_set_codec_descriptor(ctxt *AVCodecContext, d *AVCodecDescriptor) { - C.av_codec_set_codec_descriptor((*C.struct_AVCodecContext)(ctxt), (*C.struct_AVCodecDescriptor)(d)) -} - -//int av_codec_get_lowres (const AVCodecContext *avctx) -func Av_codec_get_lowres(ctxt *AVCodecContext) int { - return int(C.av_codec_get_lowres((*C.struct_AVCodecContext)(ctxt))) -} - -//void av_codec_set_lowres (AVCodecContext *avctx, int val) -func Av_codec_set_lowres(ctxt *AVCodecContext, i int) { - C.av_codec_set_lowres((*C.struct_AVCodecContext)(ctxt), C.int(i)) -} - -//int av_codec_get_seek_preroll (const AVCodecContext *avctx) -func Av_codec_get_seek_preroll(ctxt *AVCodecContext) int { - return int(C.av_codec_get_seek_preroll((*C.struct_AVCodecContext)(ctxt))) -} - -//void av_codec_set_seek_preroll (AVCodecContext *avctx, int val) -func Av_codec_set_seek_preroll(ctxt *AVCodecContext, i int) { - C.av_codec_set_seek_preroll((*C.struct_AVCodecContext)(ctxt), C.int(i)) -} - -//uint16_t *av_codec_get_chroma_intra_matrix (const AVCodecContext *avctx) -func Av_codec_get_chroma_intra_matrix(ctxt *AVCodecContext) *uint16 { - return (*uint16)(C.av_codec_get_chroma_intra_matrix((*C.struct_AVCodecContext)(ctxt))) -} - -//void av_codec_set_chroma_intra_matrix (AVCodecContext *avctx, uint16_t *val) -func Av_codec_set_chroma_intra_matrix(ctxt *AVCodecContext, t *uint16) { - C.av_codec_set_chroma_intra_matrix((*C.struct_AVCodecContext)(ctxt), (*C.uint16_t)(t)) -} - -//int av_codec_get_max_lowres (const AVCodec *codec) -func Av_codec_get_max_lowres(c *AVCodec) int { +func (c *AvCodec) AvCodecGetMaxLowres() int { return int(C.av_codec_get_max_lowres((*C.struct_AVCodec)(c))) } //If c is NULL, returns the first registered codec, if c is non-NULL, -//returns the next registered codec after c, or NULL if c is the last one. -//AVCodec *av_codec_next (const AVCodec *c) -func Av_codec_next(c *AVCodec) *AVCodec { - return (*AVCodec)(C.av_codec_next((*C.struct_AVCodec)(c))) +func (c *AvCodec) AvCodecNext() *AvCodec { + return (*AvCodec)(C.av_codec_next((*C.struct_AVCodec)(c))) } -//Return the LIBAVCODEC_VERSION_INT constant. -//unsigned avcodec_version (void) -func Avcodec_version() uint { +//Return the LIBAvCODEC_VERSION_INT constant. +func AvcodecVersion() uint { return uint(C.avcodec_version()) } //Return the libavcodec build-time configuration. -//const char *avcodec_configuration (void) -func Avcodec_configuration() string { +func AvcodecConfiguration() string { return C.GoString(C.avcodec_configuration()) } //Return the libavcodec license. -//const char *avcodec_license (void) -func Avcodec_license() string { +func AvcodecLicense() string { return C.GoString(C.avcodec_license()) } //Register the codec codec and initialize libavcodec. -//void avcodec_register (AVCodec *codec) -func Avcodec_register(c *AVCodec) { +func (c *AvCodec) AvcodecRegister() { C.avcodec_register((*C.struct_AVCodec)(c)) } //Register all the codecs, parsers and bitstream filters which were enabled at configuration time. -//void avcodec_register_all (void) -func Avcodec_register_all() { +func AvcodecRegisterAll() { C.avcodec_register_all() } -//Allocate an AVCodecContext and set its fields to default values. -//AVCodecContext *avcodec_alloc_context3 (const AVCodec *codec) -func Avcodec_alloc_context3(c *AVCodec) *AVCodecContext { - return (*AVCodecContext)(C.avcodec_alloc_context3((*C.struct_AVCodec)(c))) +//Allocate an AvCodecContext and set its fields to default values. +func (c *AvCodec) AvcodecAllocContext3() *AvCodecContext { + return (*AvCodecContext)(C.avcodec_alloc_context3((*C.struct_AVCodec)(c))) } -//Free the codec context and everything associated with it and write NULL to the provided pointer. -//void avcodec_free_context (AVCodecContext **avctx) -func Avcodec_free_context(ctxt **AVCodecContext) { - C.avcodec_free_context((**C.struct_AVCodecContext)(unsafe.Pointer(ctxt))) +//Get the AvClass for AvCodecContext. +func AvcodecGetClass() *AvClass { + return (*AvClass)(C.avcodec_get_class()) } -//Set the fields of the given AVCodecContext to default values corresponding to the given codec (defaults may be codec-dependent). -//int avcodec_get_context_defaults3 (AVCodecContext *s, const AVCodec *codec) -func Avcodec_get_context_defaults3(ctxt *AVCodecContext, c *AVCodec) int { - return int(C.avcodec_get_context_defaults3((*C.struct_AVCodecContext)(ctxt), (*C.struct_AVCodec)(c))) +//Get the AvClass for AvFrame. +func AvcodecGetFrameClass() *AvClass { + return (*AvClass)(C.avcodec_get_frame_class()) } -//Get the AVClass for AVCodecContext. -//const AVClass *avcodec_get_class (void) -func Avcodec_get_class() *AVClass { - return (*AVClass)(C.avcodec_get_class()) -} - -//Get the AVClass for AVFrame. -//const AVClass *avcodec_get_frame_class (void) -func Avcodec_get_frame_class() *AVClass { - return (*AVClass)(C.avcodec_get_frame_class()) -} - -//Get the AVClass for AVSubtitleRect. -//const AVClass *avcodec_get_subtitle_rect_class (void) -func Avcodec_get_subtitle_rect_class() *AVClass { - return (*AVClass)(C.avcodec_get_subtitle_rect_class()) -} - -//Copy the settings of the source AVCodecContext into the destination AVCodecContext. -//int avcodec_copy_context (AVCodecContext *dest, const AVCodecContext *src) -func Avcodec_copy_context(ctxt, ctxt2 *AVCodecContext) int { - return int(C.avcodec_copy_context((*C.struct_AVCodecContext)(ctxt), (*C.struct_AVCodecContext)(ctxt2))) -} - -//Initialize the AVCodecContext to use the given AVCodec -//int avcodec_open2 (AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options) -func Avcodec_open2(ctxt *AVCodecContext, c *AVCodec, d **AVDictionary) int { - return int(C.avcodec_open2((*C.struct_AVCodecContext)(ctxt), (*C.struct_AVCodec)(c), (**C.struct_AVDictionary)(unsafe.Pointer(d)))) -} - -//Close a given AVCodecContext and free all the data associated with it (but not the AVCodecContext itself). -//int avcodec_close (AVCodecContext *avctx) -func Avcodec_close(ctxt *AVCodecContext) int { - return int(C.avcodec_close((*C.struct_AVCodecContext)(ctxt))) +//Get the AvClass for AvSubtitleRect. +func AvcodecGetSubtitleRectClass() *AvClass { + return (*AvClass)(C.avcodec_get_subtitle_rect_class()) } //Free all allocated data in the given subtitle struct. -//void avsubtitle_free (AVSubtitle *sub) -func Avsubtitle_free(s *AVSubtitle) { +func AvsubtitleFree(s *AvSubtitle) { C.avsubtitle_free((*C.struct_AVSubtitle)(s)) } -//Initialize optional fields of a packet with default values. -//void av_init_packet (AVPacket *pkt) -func Av_init_packet(p *AVPacket) { - C.av_init_packet((*C.struct_AVPacket)(p)) -} - -//Allocate the payload of a packet and initialize its fields with default values. -//int av_new_packet (AVPacket *pkt, int size) -func Av_new_packet(p *AVPacket, s int) int { - return int(C.av_new_packet((*C.struct_AVPacket)(p), C.int(s))) -} - -//Reduce packet size, correctly zeroing padding. -//void av_shrink_packet (AVPacket *pkt, int size) -func Av_shrink_packet(p *AVPacket, s int) { - C.av_shrink_packet((*C.struct_AVPacket)(p), C.int(s)) -} - -//Increase packet size, correctly zeroing padding. -//int av_grow_packet (AVPacket *pkt, int grow_by) -func Av_grow_packet(p *AVPacket, s int) int { - return int(C.av_grow_packet((*C.struct_AVPacket)(p), C.int(s))) -} - -//Initialize a reference-counted packet from av_malloc()ed data. -//int av_packet_from_data (AVPacket *pkt, uint8_t *data, int size) -func Av_packet_from_data(p *AVPacket, d *uint8, s int) int { - return int(C.av_packet_from_data((*C.struct_AVPacket)(p), (*C.uint8_t)(d), C.int(s))) - -} - -//int av_dup_packet (AVPacket *pkt) -func Av_dup_packet(p *AVPacket) int { - return int(C.av_dup_packet((*C.struct_AVPacket)(p))) - -} - -//Copy packet, including contents. -//int av_copy_packet (AVPacket *dst, const AVPacket *src) -func Av_copy_packet(p, r *AVPacket) int { - return int(C.av_copy_packet((*C.struct_AVPacket)(p), (*C.struct_AVPacket)(r))) - -} - -//Copy packet side data. -//int av_copy_packet_side_data (AVPacket *dst, const AVPacket *src) -func Av_copy_packet_side_data(p, r *AVPacket) int { - return int(C.av_copy_packet_side_data((*C.struct_AVPacket)(p), (*C.struct_AVPacket)(r))) - -} - -//Free a packet. -//void av_free_packet (AVPacket *pkt) -func Av_free_packet(p *AVPacket) { - C.av_free_packet((*C.struct_AVPacket)(p)) - -} - -//Allocate new information of a packet. -//uint8_t *av_packet_new_side_data (AVPacket *pkt, enum AVPacketSideDataType type, int size) -func Av_packet_new_side_data(p *AVPacket, t AVPacketSideDataType, s int) *uint8 { - return (*uint8)(C.av_packet_new_side_data((*C.struct_AVPacket)(p), (C.enum_AVPacketSideDataType)(t), C.int(s))) -} - -//Shrink the already allocated side data buffer. -//int av_packet_shrink_side_data (AVPacket *pkt, enum AVPacketSideDataType type, int size) -func Av_packet_shrink_side_data(p *AVPacket, t AVPacketSideDataType, s int) int { - return int(C.av_packet_shrink_side_data((*C.struct_AVPacket)(p), (C.enum_AVPacketSideDataType)(t), C.int(s))) -} - -//Get side information from packet. -//uint8_t *av_packet_get_side_data (AVPacket *pkt, enum AVPacketSideDataType type, int *size) -func Av_packet_get_side_data(p *AVPacket, t AVPacketSideDataType, s *int) *uint8 { - return (*uint8)(C.av_packet_get_side_data((*C.struct_AVPacket)(p), (C.enum_AVPacketSideDataType)(t), (*C.int)(unsafe.Pointer(s)))) -} - -//int av_packet_merge_side_data (AVPacket *pkt) -func Av_packet_merge_side_data(p *AVPacket) int { - return int(C.av_packet_merge_side_data((*C.struct_AVPacket)(p))) -} - -//int av_packet_split_side_data (AVPacket *pkt) -func Av_packet_split_side_data(p *AVPacket) int { - return int(C.av_packet_split_side_data((*C.struct_AVPacket)(p))) -} - -// //const char *av_packet_side_data_name (enum AVPacketSideDataType type) -// func Av_packet_side_data_name(t AVPacketSideDataType) string { -// return C.GoString(C.av_packet_side_data_name((C.enum_AVPacketSideDataType)(t))) -// } - //Pack a dictionary for use in side_data. -//uint8_t *av_packet_pack_dictionary (AVDictionary *dict, int *size) -func Av_packet_pack_dictionary(d *AVDictionary, s *int) *uint8 { +func AvPacketPackDictionary(d *AvDictionary, s *int) *uint8 { return (*uint8)(C.av_packet_pack_dictionary((*C.struct_AVDictionary)(d), (*C.int)(unsafe.Pointer(s)))) } //Unpack a dictionary from side_data. -//int av_packet_unpack_dictionary (const uint8_t *data, int size, AVDictionary **dict) -func Av_packet_unpack_dictionary(d *uint8, s int, dt **AVDictionary) int { +func AvPacketUnpackDictionary(d *uint8, s int, dt **AvDictionary) int { return int(C.av_packet_unpack_dictionary((*C.uint8_t)(d), C.int(s), (**C.struct_AVDictionary)(unsafe.Pointer(dt)))) } -//Convenience function to free all the side data stored. -//void av_packet_free_side_data (AVPacket *pkt) -func Av_packet_free_side_data(p *AVPacket) { - C.av_packet_free_side_data((*C.struct_AVPacket)(p)) -} - -//Setup a new reference to the data described by a given packet. -//int av_packet_ref (AVPacket *dst, const AVPacket *src) -func Av_packet_ref(p, s *AVPacket) int { - return int(C.av_packet_ref((*C.struct_AVPacket)(p), (*C.struct_AVPacket)(s))) -} - -//Wipe the packet. -//void av_packet_unref (AVPacket *pkt) -func Av_packet_unref(p *AVPacket) { - C.av_packet_unref((*C.struct_AVPacket)(p)) -} - -//Move every field in src to dst and reset src. -//void av_packet_move_ref (AVPacket *dst, AVPacket *src) -func Av_packet_move_ref(p, s *AVPacket) { - C.av_packet_move_ref((*C.struct_AVPacket)(p), (*C.struct_AVPacket)(s)) -} - -//Copy only "properties" fields from src to dst. -//int av_packet_copy_props (AVPacket *dst, const AVPacket *src) -func Av_packet_copy_props(p, s *AVPacket) int { - return int(C.av_packet_copy_props((*C.struct_AVPacket)(p), (*C.struct_AVPacket)(s))) -} - -//Convert valid timing fields (timestamps / durations) in a packet from one timebase to another. -//void av_packet_rescale_ts (AVPacket *pkt, AVRational tb_src, AVRational tb_dst) -func Av_packet_rescale_ts(p *AVPacket, r, r2 AVRational) { - C.av_packet_rescale_ts((*C.struct_AVPacket)(p), (C.struct_AVRational)(r), (C.struct_AVRational)(r2)) -} - //Find a registered decoder with a matching codec ID. -//AVCodec *avcodec_find_decoder (enum AVCodecID id) -func Avcodec_find_decoder(id AVCodecID) *AVCodec { - return (*AVCodec)(C.avcodec_find_decoder((C.enum_AVCodecID)(id))) +func AvcodecFindDecoder(id AvCodecId) *AvCodec { + return (*AvCodec)(C.avcodec_find_decoder((C.enum_AVCodecID)(id))) } //Find a registered decoder with the specified name. -//AVCodec *avcodec_find_decoder_by_name (const char *name) -func Avcodec_find_decoder_by_name(n string) *AVCodec { - return (*AVCodec)(C.avcodec_find_decoder_by_name(C.CString(n))) +func AvcodecFindDecoderByName(n string) *AvCodec { + return (*AvCodec)(C.avcodec_find_decoder_by_name(C.CString(n))) } -//The default callback for AVCodecContext.get_buffer2(). -//int avcodec_default_get_buffer2 (AVCodecContext *s, AVFrame *frame, int flags) -func Avcodec_default_get_buffer2(s *AVCodecContext, f *AVFrame, l int) int { - return int(C.avcodec_default_get_buffer2((*C.struct_AVCodecContext)(s), (*C.struct_AVFrame)(f), C.int(l))) -} - -//Modify width and height values so that they will result in a memory buffer that is acceptable for the codec if you do not use any horizontal padding. -//void avcodec_align_dimensions (AVCodecContext *s, int *width, int *height) -func Avcodec_align_dimensions(ctxt *AVCodecContext, w, h *int) { - C.avcodec_align_dimensions((*C.struct_AVCodecContext)(ctxt), (*C.int)(unsafe.Pointer(w)), (*C.int)(unsafe.Pointer(h))) -} - -//Modify width and height values so that they will result in a memory buffer that is acceptable for the codec if you also ensure that all line sizes are a multiple of the respective linesize_align[i]. -//void avcodec_align_dimensions2 (AVCodecContext *s, int *width, int *height, int linesize_align[AV_NUM_DATA_POINTERS]) -func Avcodec_align_dimensions2(ctxt *AVCodecContext, w, h *int, l int) { - C.avcodec_align_dimensions2((*C.struct_AVCodecContext)(ctxt), (*C.int)(unsafe.Pointer(w)), (*C.int)(unsafe.Pointer(h)), (*C.int)(unsafe.Pointer(&l))) -} - -//Converts AVChromaLocation to swscale x/y chroma position. -//int avcodec_enum_to_chroma_pos (int *xpos, int *ypos, enum AVChromaLocation pos) -func Avcodec_enum_to_chroma_pos(x, y *int, l AVChromaLocation) int { +//Converts AvChromaLocation to swscale x/y chroma position. +func AvcodecEnumToChromaPos(x, y *int, l AvChromaLocation) int { return int(C.avcodec_enum_to_chroma_pos((*C.int)(unsafe.Pointer(x)), (*C.int)(unsafe.Pointer(y)), (C.enum_AVChromaLocation)(l))) } -//Converts swscale x/y chroma position to AVChromaLocation. -//enum AVChromaLocation avcodec_chroma_pos_to_enum (int xpos, int ypos) -func Avcodec_chroma_pos_to_enum(x, y int) AVChromaLocation { - return (AVChromaLocation)(C.avcodec_chroma_pos_to_enum(C.int(x), C.int(y))) -} - -//Decode the audio frame of size avpkt->size from avpkt->data into frame. -//int avcodec_decode_audio4 (AVCodecContext *avctx, AVFrame *frame, int *got_frame_ptr, const AVPacket *avpkt) -func Avcodec_decode_audio4(ctxt *AVCodecContext, f *AVFrame, g *int, a *AVPacket) int { - return int(C.avcodec_decode_audio4((*C.struct_AVCodecContext)(ctxt), (*C.struct_AVFrame)(f), (*C.int)(unsafe.Pointer(g)), (*C.struct_AVPacket)(a))) -} - -//Decode the video frame of size avpkt->size from avpkt->data into picture. -//int avcodec_decode_video2 (AVCodecContext *avctx, AVFrame *picture, int *got_picture_ptr, const AVPacket *avpkt) -func Avcodec_decode_video2(ctxt *AVCodecContext, p *AVFrame, g *int, a *AVPacket) int { - return int(C.avcodec_decode_video2((*C.struct_AVCodecContext)(ctxt), (*C.struct_AVFrame)(p), (*C.int)(unsafe.Pointer(g)), (*C.struct_AVPacket)(a))) -} - -//Decode a subtitle message. -//int avcodec_decode_subtitle2 (AVCodecContext *avctx, AVSubtitle *sub, int *got_sub_ptr, AVPacket *avpkt) -func Avcodec_decode_subtitle2(ctxt *AVCodecContext, s *AVSubtitle, g *int, a *AVPacket) int { - return int(C.avcodec_decode_subtitle2((*C.struct_AVCodecContext)(ctxt), (*C.struct_AVSubtitle)(s), (*C.int)(unsafe.Pointer(g)), (*C.struct_AVPacket)(a))) -} - -//AVCodecParser *av_parser_next (const AVCodecParser *c) -func Av_parser_next(p *AVCodecParser) *AVCodecParser { - return (*AVCodecParser)(C.av_parser_next((*C.struct_AVCodecParser)(p))) -} - -//void av_register_codec_parser (AVCodecParser *parser) -func Av_register_codec_parser(p *AVCodecParser) { - C.av_register_codec_parser((*C.struct_AVCodecParser)(p)) -} - -//AVCodecParserContext *av_parser_init (int codec_id) -func Av_parser_init(c int) *AVCodecParserContext { - return (*AVCodecParserContext)(C.av_parser_init(C.int(c))) -} - -//Parse a packet. -//int av_parser_parse2 (AVCodecParserContext *s, AVCodecContext *avctx, uint8_t **poutbuf, int *poutbuf_size, const uint8_t *buf, int buf_size, int64_t pts, int64_t dts, int64_t pos) -func Av_parser_parse2(ctxtp *AVCodecParserContext, ctxt *AVCodecContext, p **uint8, ps *int, b *uint8, bs int, pt, dt, po int64) int { - return int(C.av_parser_parse2((*C.struct_AVCodecParserContext)(ctxtp), (*C.struct_AVCodecContext)(ctxt), (**C.uint8_t)(unsafe.Pointer(p)), (*C.int)(unsafe.Pointer(ps)), (*C.uint8_t)(b), C.int(bs), (C.int64_t)(pt), (C.int64_t)(dt), (C.int64_t)(po))) -} - -//int av_parser_change (AVCodecParserContext *s, AVCodecContext *avctx, uint8_t **poutbuf, int *poutbuf_size, const uint8_t *buf, int buf_size, int keyframe) -func Av_parser_change(ctxtp *AVCodecParserContext, ctxt *AVCodecContext, pb **uint8, pbs *int, b *uint8, bs, k int) int { - return int(C.av_parser_change((*C.struct_AVCodecParserContext)(ctxtp), (*C.struct_AVCodecContext)(ctxt), (**C.uint8_t)(unsafe.Pointer(pb)), (*C.int)(unsafe.Pointer(pbs)), (*C.uint8_t)(b), C.int(bs), C.int(k))) -} - -//void av_parser_close (AVCodecParserContext *s) -func Av_parser_close(ctxtp *AVCodecParserContext) { - C.av_parser_close((*C.struct_AVCodecParserContext)(ctxtp)) +//Converts swscale x/y chroma position to AvChromaLocation. +func AvcodecChromaPosToEnum(x, y int) AvChromaLocation { + return (AvChromaLocation)(C.avcodec_chroma_pos_to_enum(C.int(x), C.int(y))) } //Find a registered encoder with a matching codec ID. -//AVCodec *avcodec_find_encoder (enum AVCodecID id) -func Avcodec_find_encoder(id AVCodecID) *AVCodec { - return (*AVCodec)(C.avcodec_find_encoder((C.enum_AVCodecID)(id))) +func AvcodecFindEncoder(id AvCodecId) *AvCodec { + return (*AvCodec)(C.avcodec_find_encoder((C.enum_AVCodecID)(id))) } //Find a registered encoder with the specified name. -//AVCodec *avcodec_find_encoder_by_name (const char *name) -func Avcodec_find_encoder_by_name(c string) *AVCodec { - return (*AVCodec)(C.avcodec_find_encoder_by_name(C.CString(c))) +func AvcodecFindEncoderByName(c string) *AvCodec { + return (*AvCodec)(C.avcodec_find_encoder_by_name(C.CString(c))) } -//Encode a frame of audio. -//int avcodec_encode_audio2 (AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr) -func Avcodec_encode_audio2(ctxt *AVCodecContext, p *AVPacket, f *AVFrame, gp *int) int { - return int(C.avcodec_encode_audio2((*C.struct_AVCodecContext)(ctxt), (*C.struct_AVPacket)(p), (*C.struct_AVFrame)(f), (*C.int)(unsafe.Pointer(gp)))) -} - -//Encode a frame of video -//int avcodec_encode_video2 (AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr) -func Avcodec_encode_video2(ctxt *AVCodecContext, p *AVPacket, f *AVFrame, gp *int) int { - return int(C.avcodec_encode_video2((*C.struct_AVCodecContext)(ctxt), (*C.struct_AVPacket)(p), (*C.struct_AVFrame)(f), (*C.int)(unsafe.Pointer(gp)))) -} - -//int avcodec_encode_subtitle (AVCodecContext *avctx, uint8_t *buf, int buf_size, const AVSubtitle *sub) -func Avcodec_encode_subtitle(ctxt *AVCodecContext, b *uint8, bs int, s *AVSubtitle) int { - return int(C.avcodec_encode_subtitle((*C.struct_AVCodecContext)(ctxt), (*C.uint8_t)(b), C.int(bs), (*C.struct_AVSubtitle)(s))) -} - -//Free a picture previously allocated by avpicture_alloc(). -//Allocate memory for the pixels of a picture and setup the AVPicture fields for it. -func Avpicture_alloc(p *AVPicture, t AVPixelFormat, w, h int) int { - return int(C.avpicture_alloc((*C.struct_AVPicture)(p), (C.enum_AVPixelFormat)(t), C.int(w), C.int(h))) -} - -//void avpicture_free (AVPicture *picture) -func Avpicture_free(p *AVPicture) { - C.avpicture_free((*C.struct_AVPicture)(p)) -} - -//Setup the picture fields based on the specified image parameters and the provided image data buffer. -//int avpicture_fill (AVPicture *picture, const uint8_t *ptr, enum AVPixelFormat pix_fmt, int width, int height) -func Avpicture_fill(p *AVPicture, pt *uint8, pf AVPixelFormat, w, h int) int { - return int(C.avpicture_fill((*C.struct_AVPicture)(p), (*C.uint8_t)(pt), (C.enum_AVPixelFormat)(pf), C.int(w), C.int(h))) -} - -//Copy pixel data from an AVPicture into a buffer. -//int avpicture_layout (const AVPicture *src, enum AVPixelFormat pix_fmt, int width, int height, unsigned char *dest, int dest_size) -func Avpicture_layout(s *AVPicture, pf AVPixelFormat, w, h int, d *string, ds int) int { - return int(C.avpicture_layout((*C.struct_AVPicture)(s), (C.enum_AVPixelFormat)(pf), C.int(w), C.int(h), (*C.uchar)(unsafe.Pointer(d)), C.int(ds))) -} - -//Calculate the size in bytes that a picture of the given width and height would occupy if stored in the given picture format. -//int avpicture_get_size (enum AVPixelFormat pix_fmt, int width, int height) -func Avpicture_get_size(pf AVPixelFormat, w, h int) int { - return int(C.avpicture_get_size((C.enum_AVPixelFormat)(pf), C.int(w), C.int(h))) -} - -//Copy image src to dst. -//void av_picture_copy (AVPicture *dst, const AVPicture *src, enum AVPixelFormat pix_fmt, int width, int height) -func Av_picture_copy(d, s *AVPicture, pf AVPixelFormat, w, h int) { - C.av_picture_copy((*C.struct_AVPicture)(d), (*C.struct_AVPicture)(s), (C.enum_AVPixelFormat)(pf), C.int(w), C.int(h)) -} - -//Crop image top and left side. -//int av_picture_crop (AVPicture *dst, const AVPicture *src, enum AVPixelFormat pix_fmt, int top_band, int left_band) -func Av_picture_crop(d, s *AVPicture, pf AVPixelFormat, t, l int) int { - return int(C.av_picture_crop((*C.struct_AVPicture)(d), (*C.struct_AVPicture)(s), (C.enum_AVPixelFormat)(pf), C.int(t), C.int(l))) -} - -//Pad image. -//int av_picture_pad (AVPicture *dst, const AVPicture *src, int height, int width, enum AVPixelFormat pix_fmt, int padtop, int padbottom, int padleft, int padright, int *color) -func Av_picture_pad(p, s *AVPicture, h, w int, pf AVPixelFormat, t, b, l, r int, c *int) int { - return int(C.av_picture_pad((*C.struct_AVPicture)(p), (*C.struct_AVPicture)(s), (C.int)(h), (C.int)(w), (C.enum_AVPixelFormat)(pf), (C.int)(t), (C.int)(b), (C.int)(l), (C.int)(r), (*C.int)(unsafe.Pointer(c)))) -} - -//Utility function to access log2_chroma_w log2_chroma_h from the pixel format AVPixFmtDescriptor. -//void avcodec_get_chroma_sub_sample (enum AVPixelFormat pix_fmt, int *h_shift, int *v_shift) -func Avcodec_get_chroma_sub_sample(pf AVPixelFormat, h, v *int) { - C.avcodec_get_chroma_sub_sample((C.enum_AVPixelFormat)(pf), (*C.int)(unsafe.Pointer(h)), (*C.int)(unsafe.Pointer(v))) -} - -//Return a value representing the fourCC code associated to the pixel format pix_fmt, or 0 if no associated fourCC code can be found. -//unsigned int avcodec_pix_fmt_to_codec_tag (enum AVPixelFormat pix_fmt) -func Avcodec_pix_fmt_to_codec_tag(pf AVPixelFormat) uint { - return uint(C.avcodec_pix_fmt_to_codec_tag((C.enum_AVPixelFormat)(pf))) -} - -//int avcodec_get_pix_fmt_loss (enum AVPixelFormat dst_pix_fmt, enum AVPixelFormat src_pix_fmt, int has_alpha) -func Avcodec_get_pix_fmt_loss(p, f AVPixelFormat, a int) int { - return int(C.avcodec_get_pix_fmt_loss((C.enum_AVPixelFormat)(p), (C.enum_AVPixelFormat)(f), C.int(a))) -} - -//Find the best pixel format to convert to given a certain source pixel format. -//enum AVPixelFormat avcodec_find_best_pix_fmt_of_list (const enum AVPixelFormat *pix_fmt_list, enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr) -func Avcodec_find_best_pix_fmt_of_list(f *AVPixelFormat, s AVPixelFormat, a int, p *int) AVPixelFormat { - return (AVPixelFormat)(C.avcodec_find_best_pix_fmt_of_list((*C.enum_AVPixelFormat)(f), (C.enum_AVPixelFormat)(s), C.int(a), (*C.int)(unsafe.Pointer(p)))) -} - -//enum AVPixelFormat avcodec_find_best_pix_fmt_of_2 (enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2, enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr) -func Avcodec_find_best_pix_fmt_of_2(f1, f2, s AVPixelFormat, a int, l *int) AVPixelFormat { - return (AVPixelFormat)(C.avcodec_find_best_pix_fmt_of_2((C.enum_AVPixelFormat)(f1), (C.enum_AVPixelFormat)(f2), (C.enum_AVPixelFormat)(s), C.int(a), (*C.int)(unsafe.Pointer(l)))) -} - -//enum AVPixelFormat avcodec_default_get_format (struct AVCodecContext *s, const enum AVPixelFormat *fmt) -func Avcodec_default_get_format(ctxt *AVCodecContext, f *AVPixelFormat) AVPixelFormat { - return (AVPixelFormat)(C.avcodec_default_get_format((*C.struct_AVCodecContext)(ctxt), (*C.enum_AVPixelFormat)(f))) -} - -//size_t av_get_codec_tag_string (char *buf, size_t buf_size, unsigned int codec_tag) //Put a string representing the codec tag codec_tag in buf. -func Av_get_codec_tag_string(b string, bf uintptr, c uint) uintptr { +func AvGetCodecTagString(b string, bf uintptr, c uint) uintptr { return uintptr(C.av_get_codec_tag_string(C.CString(b), C.size_t(bf), C.uint(c))) } -//void avcodec_string (char *buf, int buf_size, AVCodecContext *enc, int encode) -func Avcodec_string(b string, bs int, ctxt *AVCodecContext, e int) { +func AvcodecString(b string, bs int, ctxt *AvCodecContext, e int) { C.avcodec_string(C.CString(b), C.int(bs), (*C.struct_AVCodecContext)(ctxt), C.int(e)) } //Return a name for the specified profile, if available. -//const char *av_get_profile_name (const AVCodec *codec, int profile) -func Av_get_profile_name(c *AVCodec, p int) string { +func (c *AvCodec) AvGetProfileName(p int) string { return C.GoString(C.av_get_profile_name((*C.struct_AVCodec)(c), C.int(p))) } -// //int avcodec_default_execute (AVCodecContext *c, int(*func)(AVCodecContext *c2, void *arg2), void *arg, int *ret, int count, int size) -// func Avcodec_default_execute(ctxt AVCodecContext, int(*func)(AVCodecContext *c2, void *arg2), void *arg, int *ret, int count, s int){ -// _,err := C.avcodec_default_execute(AVCodecContext *c, int(*func)(AVCodecContext *c2, void *arg2), void *arg, int *ret, int count, s int) -// } - -// //int avcodec_default_execute2 (AVCodecContext *c, int(*func)(AVCodecContext *c2, void *arg2, int, int), void *arg, int *ret, int count) -// func Avcodec_default_execute2(AVCodecContext *c, int(*func)(AVCodecContext *c2, void *arg2, int, int), void *arg, int *ret, int count){ -// _,err := C.avcodec_default_execute2(AVCodecContext *c, int(*func)(AVCodecContext *c2, void *arg2, int, int), void *arg, int *ret, int count) -// } - -//Fill AVFrame audio data and linesize pointers. -//int avcodec_fill_audio_frame (AVFrame *frame, int nb_channels, enum AVSampleFormat sample_fmt, const uint8_t *buf, int buf_size, int align) -func Avcodec_fill_audio_frame(f *AVFrame, c int, s AVSampleFormat, b *uint8, bs, a int) int { +//Fill AvFrame audio data and linesize pointers. +func AvcodecFillAudioFrame(f *AvFrame, c int, s AvSampleFormat, b *uint8, bs, a int) int { return int(C.avcodec_fill_audio_frame((*C.struct_AVFrame)(f), C.int(c), (C.enum_AVSampleFormat)(s), (*C.uint8_t)(b), C.int(bs), C.int(a))) } -//Reset the internal decoder state / flush internal buffers. -//void avcodec_flush_buffers (AVCodecContext *avctx) -func Avcodec_flush_buffers(ctxt *AVCodecContext) { - C.avcodec_flush_buffers((*C.struct_AVCodecContext)(ctxt)) -} - //Return codec bits per sample. -//int av_get_bits_per_sample (enum AVCodecID codec_id) -func Av_get_bits_per_sample(c AVCodecID) int { +func AvGetBitsPerSample(c AvCodecId) int { return int(C.av_get_bits_per_sample((C.enum_AVCodecID)(c))) } //Return the PCM codec associated with a sample format. -//enum AVCodecID av_get_pcm_codec (enum AVSampleFormat fmt, int be) -func Av_get_pcm_codec(f AVSampleFormat, b int) AVCodecID { - return (AVCodecID)(C.av_get_pcm_codec((C.enum_AVSampleFormat)(f), C.int(b))) +func AvGetPcmCodec(f AvSampleFormat, b int) AvCodecId { + return (AvCodecId)(C.av_get_pcm_codec((C.enum_AVSampleFormat)(f), C.int(b))) } //Return codec bits per sample. -//int av_get_exact_bits_per_sample (enum AVCodecID codec_id) -func Av_get_exact_bits_per_sample(c AVCodecID) int { +func AvGetExactBitsPerSample(c AvCodecId) int { return int(C.av_get_exact_bits_per_sample((C.enum_AVCodecID)(c))) } -//Return audio frame duration. -//int av_get_audio_frame_duration (AVCodecContext *avctx, int frame_bytes) -func Av_get_audio_frame_duration(ctxt *AVCodecContext, f int) int { - return int(C.av_get_audio_frame_duration((*C.struct_AVCodecContext)(ctxt), C.int(f))) -} - //Register a bitstream filter. -//void av_register_bitstream_filter (AVBitStreamFilter *bsf) -func Av_register_bitstream_filter(b *AVBitStreamFilter) { +func (b *AvBitStreamFilter) AvRegisterBitstreamFilter() { C.av_register_bitstream_filter((*C.struct_AVBitStreamFilter)(b)) } //Create and initialize a bitstream filter context given a bitstream filter name. -//AVBitStreamFilterContext *av_bitstream_filter_init (const char *name) -func Av_bitstream_filter_init(n string) *AVBitStreamFilterContext { - return (*AVBitStreamFilterContext)(C.av_bitstream_filter_init(C.CString(n))) +func AvBitstreamFilterInit(n string) *AvBitStreamFilterContext { + return (*AvBitStreamFilterContext)(C.av_bitstream_filter_init(C.CString(n))) } //Filter bitstream. -//int av_bitstream_filter_filter (AVBitStreamFilterContext *bsfc, AVCodecContext *avctx, const char *args, uint8_t **poutbuf, int *poutbuf_size, const uint8_t *buf, int buf_size, int keyframe) -func Av_bitstream_filter_filter(bsctxt *AVBitStreamFilterContext, ctxt *AVCodecContext, a string, p **uint8, ps *int, b *uint8, bs, k int) int { - return int(C.av_bitstream_filter_filter((*C.struct_AVBitStreamFilterContext)(bsctxt), (*C.struct_AVCodecContext)(ctxt), C.CString(a), (**C.uint8_t)(unsafe.Pointer(p)), (*C.int)(unsafe.Pointer(ps)), (*C.uint8_t)(b), C.int(bs), C.int(k))) +func (bfx *AvBitStreamFilterContext) AvBitstreamFilterFilter(ctxt *AvCodecContext, a string, p **uint8, ps *int, b *uint8, bs, k int) int { + return int(C.av_bitstream_filter_filter((*C.struct_AVBitStreamFilterContext)(bfx), (*C.struct_AVCodecContext)(ctxt), C.CString(a), (**C.uint8_t)(unsafe.Pointer(p)), (*C.int)(unsafe.Pointer(ps)), (*C.uint8_t)(b), C.int(bs), C.int(k))) } //Release bitstream filter context. -//void av_bitstream_filter_close (AVBitStreamFilterContext *bsf) -func Av_bitstream_filter_close(bsctxt *AVBitStreamFilterContext) { - C.av_bitstream_filter_close((*C.struct_AVBitStreamFilterContext)(bsctxt)) +func (bfx *AvBitStreamFilterContext) AvBitstreamFilterClose() { + C.av_bitstream_filter_close((*C.struct_AVBitStreamFilterContext)(bfx)) } -//If f is NULL, return the first registered bitstream filter, if f is non-NULL, return the next registered bitstream filter after f, or NULL if f is the last one. -//AVBitStreamFilter *av_bitstream_filter_next (const AVBitStreamFilter *f) -func Av_bitstream_filter_next(f *AVBitStreamFilter) *AVBitStreamFilter { - return (*AVBitStreamFilter)(C.av_bitstream_filter_next((*C.struct_AVBitStreamFilter)(f))) +//AvBitStreamFilter *av_bitstream_filter_next (const AvBitStreamFilter *f) +func (f *AvBitStreamFilter) AvBitstreamFilterNext() *AvBitStreamFilter { + return (*AvBitStreamFilter)(C.av_bitstream_filter_next((*C.struct_AVBitStreamFilter)(f))) } //Same behaviour av_fast_malloc but the buffer has additional FF_INPUT_BUFFER_PADDING_SIZE at the end which will always be 0. -//void av_fast_padded_malloc (void *ptr, unsigned int *size, size_t min_size) -func Av_fast_padded_malloc(p unsafe.Pointer, s *uint, t uintptr) { +func AvFastPaddedMalloc(p unsafe.Pointer, s *uint, t uintptr) { C.av_fast_padded_malloc(p, (*C.uint)(unsafe.Pointer(s)), (C.size_t)(t)) } //Same behaviour av_fast_padded_malloc except that buffer will always be 0-initialized after call. -//void av_fast_padded_mallocz (void *ptr, unsigned int *size, size_t min_size) -func Av_fast_padded_mallocz(p unsafe.Pointer, s *uint, t uintptr) { +func AvFastPaddedMallocz(p unsafe.Pointer, s *uint, t uintptr) { C.av_fast_padded_mallocz(p, (*C.uint)(unsafe.Pointer(s)), (C.size_t)(t)) } //Encode extradata length to a buffer. -//unsigned int av_xiphlacing (unsigned char *s, unsigned int v) -func Av_xiphlacing(s *string, v uint) uint { +func AvXiphlacing(s *string, v uint) uint { return uint(C.av_xiphlacing((*C.uchar)(unsafe.Pointer(s)), (C.uint)(v))) } //If hwaccel is NULL, returns the first registered hardware accelerator, if hwaccel is non-NULL, //returns the next registered hardware accelerator after hwaccel, or NULL if hwaccel is the last one. -//AVHWAccel *av_hwaccel_next (const AVHWAccel *hwaccel) -func Av_hwaccel_next(a *AVHWAccel) *AVHWAccel { - return (*AVHWAccel)(C.av_hwaccel_next((*C.struct_AVHWAccel)(a))) +func (a *AvHWAccel) AvHwaccelNext() *AvHWAccel { + return (*AvHWAccel)(C.av_hwaccel_next((*C.struct_AVHWAccel)(a))) } -// //Register a user provided lock manager supporting the operations specified by AVLockOp. -// //int av_lockmgr_register (int(*cb)(void **mutex, enum AVLockOp op)) -// func Av_lockmgr_register(int(*cb)(void **mutex, enum AVLockOp op)) int { -// return C.av_lockmgr_register(int(*cb)(void **mutex, enum AVLockOp op)) -// } - //Get the type of the given codec. -//enum AVMediaType avcodec_get_type (enum AVCodecID codec_id) -func Avcodec_get_type(c AVCodecID) AVMediaType { - return (AVMediaType)(C.avcodec_get_type((C.enum_AVCodecID)(c))) +func AvcodecGetType(c AvCodecId) AvMediaType { + return (AvMediaType)(C.avcodec_get_type((C.enum_AVCodecID)(c))) } //Get the name of a codec. -//const char *avcodec_get_name (enum AVCodecID id) -func Avcodec_get_name(d AVCodecID) string { +func AvcodecGetName(d AvCodecId) string { return C.GoString(C.avcodec_get_name((C.enum_AVCodecID)(d))) } -//int avcodec_is_open (AVCodecContext *s) -func Avcodec_is_open(ctxt *AVCodecContext) int { - return int(C.avcodec_is_open((*C.struct_AVCodecContext)(ctxt))) -} - -//int av_codec_is_encoder (const AVCodec *codec) -func Av_codec_is_encoder(c *AVCodec) int { +func (c *AvCodec) AvCodecIsEncoder() int { return int(C.av_codec_is_encoder((*C.struct_AVCodec)(c))) } -//int av_codec_is_decoder (const AVCodec *codec) -func Av_codec_is_decoder(c *AVCodec) int { +func (c *AvCodec) AvCodecIsDecoder() int { return int(C.av_codec_is_decoder((*C.struct_AVCodec)(c))) } -//const AVCodecDescriptor *avcodec_descriptor_get (enum AVCodecID id) -func Avcodec_descriptor_get(id AVCodecID) *AVCodecDescriptor { - return (*AVCodecDescriptor)(C.avcodec_descriptor_get((C.enum_AVCodecID)(id))) +//const AvCodecDescriptor *avcodec_descriptor_get (enum AvCodecId id) +func AvcodecDescriptorGet(id AvCodecId) *AvCodecDescriptor { + return (*AvCodecDescriptor)(C.avcodec_descriptor_get((C.enum_AVCodecID)(id))) } //Iterate over all codec descriptors known to libavcodec. -//const AVCodecDescriptor *avcodec_descriptor_next (const AVCodecDescriptor *prev) -func Avcodec_descriptor_next(d *AVCodecDescriptor) *AVCodecDescriptor { - return (*AVCodecDescriptor)(C.avcodec_descriptor_next((*C.struct_AVCodecDescriptor)(d))) +func AvcodecDescriptorNext(d *AvCodecDescriptor) *AvCodecDescriptor { + return (*AvCodecDescriptor)(C.avcodec_descriptor_next((*C.struct_AVCodecDescriptor)(d))) } -//const AVCodecDescriptor *avcodec_descriptor_get_by_name (const char *name) -func Avcodec_descriptor_get_by_name(n string) *AVCodecDescriptor { - return (*AVCodecDescriptor)(C.avcodec_descriptor_get_by_name(C.CString(n))) +func AvcodecDescriptorGetByName(n string) *AvCodecDescriptor { + return (*AvCodecDescriptor)(C.avcodec_descriptor_get_by_name(C.CString(n))) } diff --git a/avcodec/avpicture.go b/avcodec/avpicture.go new file mode 100644 index 0000000..ce44f50 --- /dev/null +++ b/avcodec/avpicture.go @@ -0,0 +1,50 @@ +/* + AvPicture +*/ +package avcodec + +//#cgo pkg-config: libavcodec +//#include +import "C" +import ( + "unsafe" +) + +//Setup the picture fields based on the specified image parameters and the provided image data buffer. +func (p *AvPicture) AvpictureFill(pt *uint8, pf AvPixelFormat, w, h int) int { + return int(C.avpicture_fill((*C.struct_AVPicture)(p), (*C.uint8_t)(pt), (C.enum_AVPixelFormat)(pf), C.int(w), C.int(h))) +} + +//Copy pixel data from an AvPicture into a buffer. +func (p *AvPicture) AvpictureLayout(pf AvPixelFormat, w, h int, d *string, ds int) int { + return int(C.avpicture_layout((*C.struct_AVPicture)(p), (C.enum_AVPixelFormat)(pf), C.int(w), C.int(h), (*C.uchar)(unsafe.Pointer(d)), C.int(ds))) +} + +//Copy image src to dst. +func (p *AvPicture) AvPictureCopy(d *AvPicture, pf AvPixelFormat, w, h int) { + C.av_picture_copy((*C.struct_AVPicture)(d), (*C.struct_AVPicture)(p), (C.enum_AVPixelFormat)(pf), C.int(w), C.int(h)) +} + +//Crop image top and left side. +func (p *AvPicture) AvPictureCrop(d *AvPicture, pf AvPixelFormat, t, l int) int { + return int(C.av_picture_crop((*C.struct_AVPicture)(d), (*C.struct_AVPicture)(p), (C.enum_AVPixelFormat)(pf), C.int(t), C.int(l))) +} + +//Pad image. +func (p *AvPicture) AvPicturePad(d *AvPicture, h, w int, pf AvPixelFormat, t, b, l, r int, c *int) int { + return int(C.av_picture_pad((*C.struct_AVPicture)(d), (*C.struct_AVPicture)(p), (C.int)(h), (C.int)(w), (C.enum_AVPixelFormat)(pf), (C.int)(t), (C.int)(b), (C.int)(l), (C.int)(r), (*C.int)(unsafe.Pointer(c)))) +} + +//Free a picture previously allocated by avpicture_alloc(). Allocate memory for the pixels of a picture and setup the AvPicture fields for it. +func (p *AvPicture) AvpictureAlloc(t AvPixelFormat, w, h int) int { + return int(C.avpicture_alloc((*C.struct_AVPicture)(p), (C.enum_AVPixelFormat)(t), C.int(w), C.int(h))) +} + +func (p *AvPicture) AvpictureFree() { + C.avpicture_free((*C.struct_AVPicture)(p)) +} + +//Calculate the size in bytes that a picture of the given width and height would occupy if stored in the given picture format. +func AvpictureGetSize(pf AvPixelFormat, w, h int) int { + return int(C.avpicture_get_size((C.enum_AVPixelFormat)(pf), C.int(w), C.int(h))) +} diff --git a/avcodec/codecs.go b/avcodec/codecs.go index 654eb17..4d17a31 100644 --- a/avcodec/codecs.go +++ b/avcodec/codecs.go @@ -420,16 +420,3 @@ const ( AV_CODEC_ID_ZLIB = int(C.AV_CODEC_ID_ZLIB) AV_CODEC_ID_ZMBV = int(C.AV_CODEC_ID_ZMBV) ) - -// const ( -// AV_CODEC_ID_4GV = int(C.AV_CODEC_ID_4GV) -// AV_CODEC_ID_ADPCM_THP_LE = int(C.AV_CODEC_ID_ADPCM_THP_LE) -// AV_CODEC_ID_APNG = int(C.AV_CODEC_ID_APNG) -// AV_CODEC_ID_DDS = int(C.AV_CODEC_ID_DDS) -// AV_CODEC_ID_DSS_SP = int(C.AV_CODEC_ID_DSS_SP) -// AV_CODEC_ID_HAP = int(C.AV_CODEC_ID_HAP) -// AV_CODEC_ID_HQX = int(C.AV_CODEC_ID_HQX) -// AV_CODEC_ID_HQ_HQA = int(C.AV_CODEC_ID_HQ_HQA) -// AV_CODEC_ID_STL = int(C.AV_CODEC_ID_STL) -// AV_CODEC_ID_TDSC = int(C.AV_CODEC_ID_TDSC) -// ) diff --git a/avcodec/context.go b/avcodec/context.go index feb5ee1..5063c78 100644 --- a/avcodec/context.go +++ b/avcodec/context.go @@ -1,557 +1,163 @@ /* - Use of this source code is governed by a MIT license that can be found in the LICENSE file. - by Giorgis (habtom@giorgis.io) + AvCodecContext */ package avcodec -func (ctxt *AVCodecContext) Active_thread_type() int { - return int(ctxt.active_thread_type) -} - -func (ctxt *AVCodecContext) B_frame_strategy() int { - return int(ctxt.b_frame_strategy) -} - -func (ctxt *AVCodecContext) B_quant_factor() float64 { - return float64(ctxt.b_quant_factor) -} - -func (ctxt *AVCodecContext) B_quant_offset() float64 { - return float64(ctxt.b_quant_offset) -} - -func (ctxt *AVCodecContext) B_sensitivity() int { - return int(ctxt.b_sensitivity) -} - -func (ctxt *AVCodecContext) Bidir_refine() int { - return int(ctxt.bidir_refine) -} - -func (ctxt *AVCodecContext) Bit_rate() int { - return int(ctxt.bit_rate) -} - -func (ctxt *AVCodecContext) Bit_rate_tolerance() int { - return int(ctxt.bit_rate_tolerance) -} - -func (ctxt *AVCodecContext) Bits_per_coded_sample() int { - return int(ctxt.bits_per_coded_sample) -} - -func (ctxt *AVCodecContext) Bits_per_raw_sample() int { - return int(ctxt.bits_per_raw_sample) -} - -func (ctxt *AVCodecContext) Block_align() int { - return int(ctxt.block_align) -} - -func (ctxt *AVCodecContext) Brd_scale() int { - return int(ctxt.brd_scale) -} - -func (ctxt *AVCodecContext) Channels() int { - return int(ctxt.channels) -} - -func (ctxt *AVCodecContext) Chromaoffset() int { - return int(ctxt.chromaoffset) -} - -func (ctxt *AVCodecContext) Coded_height() int { - return int(ctxt.coded_height) -} - -func (ctxt *AVCodecContext) Coded_width() int { - return int(ctxt.coded_width) -} - -func (ctxt *AVCodecContext) Coder_type() int { - return int(ctxt.coder_type) -} - -func (ctxt *AVCodecContext) Compression_level() int { - return int(ctxt.compression_level) -} - -func (ctxt *AVCodecContext) Context_model() int { - return int(ctxt.context_model) -} - -func (ctxt *AVCodecContext) Cutoff() int { - return int(ctxt.cutoff) -} +//#cgo pkg-config: libavcodec +//#include +import "C" +import ( + "unsafe" +) -func (ctxt *AVCodecContext) Dark_masking() float64 { - return float64(ctxt.dark_masking) +func (ctxt *AvCodecContext) AvCodecGetPktTimebase() AvRational { + return (AvRational)(C.av_codec_get_pkt_timebase((*C.struct_AVCodecContext)(ctxt))) } -func (ctxt *AVCodecContext) Dct_algo() int { - return int(ctxt.dct_algo) +func (ctxt *AvCodecContext) AvCodecSetPktTimebase(r AvRational) { + C.av_codec_set_pkt_timebase((*C.struct_AVCodecContext)(ctxt), (C.struct_AVRational)(r)) } -func (ctxt *AVCodecContext) Debug() int { - return int(ctxt.debug) +func (ctxt *AvCodecContext) AvCodecGetCodecDescriptor() *AvCodecDescriptor { + return (*AvCodecDescriptor)(C.av_codec_get_codec_descriptor((*C.struct_AVCodecContext)(ctxt))) } -func (ctxt *AVCodecContext) Debug_mv() int { - return int(ctxt.debug_mv) +func (ctxt *AvCodecContext) AvCodecSetCodecDescriptor(d *AvCodecDescriptor) { + C.av_codec_set_codec_descriptor((*C.struct_AVCodecContext)(ctxt), (*C.struct_AVCodecDescriptor)(d)) } -func (ctxt *AVCodecContext) Delay() int { - return int(ctxt.delay) +func (ctxt *AvCodecContext) AvCodecGetLowres() int { + return int(C.av_codec_get_lowres((*C.struct_AVCodecContext)(ctxt))) } -func (ctxt *AVCodecContext) Dia_size() int { - return int(ctxt.dia_size) +func (ctxt *AvCodecContext) AvCodecSetLowres(i int) { + C.av_codec_set_lowres((*C.struct_AVCodecContext)(ctxt), C.int(i)) } -func (ctxt *AVCodecContext) Err_recognition() int { - return int(ctxt.err_recognition) +func (ctxt *AvCodecContext) AvCodecGetSeekPreroll() int { + return int(C.av_codec_get_seek_preroll((*C.struct_AVCodecContext)(ctxt))) } -func (ctxt *AVCodecContext) Error_concealment() int { - return int(ctxt.error_concealment) +func (ctxt *AvCodecContext) AvCodecSetSeekPreroll(i int) { + C.av_codec_set_seek_preroll((*C.struct_AVCodecContext)(ctxt), C.int(i)) } -func (ctxt *AVCodecContext) Extradata_size() int { - return int(ctxt.extradata_size) +func (ctxt *AvCodecContext) AvCodecGetChromaIntraMatrix() *uint16 { + return (*uint16)(C.av_codec_get_chroma_intra_matrix((*C.struct_AVCodecContext)(ctxt))) } -func (ctxt *AVCodecContext) Flags() int { - return int(ctxt.flags) +func (ctxt *AvCodecContext) AvCodecSetChromaIntraMatrix(t *uint16) { + C.av_codec_set_chroma_intra_matrix((*C.struct_AVCodecContext)(ctxt), (*C.uint16_t)(t)) } -func (ctxt *AVCodecContext) Flags2() int { - return int(ctxt.flags2) +//Free the codec context and everything associated with it and write NULL to the provided pointer. +func (ctxt *AvCodecContext) AvcodecFreeContext() { + C.avcodec_free_context((**C.struct_AVCodecContext)(unsafe.Pointer(ctxt))) } -func (ctxt *AVCodecContext) Frame_bits() int { - return int(ctxt.frame_bits) +//Set the fields of the given AvCodecContext to default values corresponding to the given codec (defaults may be codec-dependent). +func (ctxt *AvCodecContext) AvcodecGetContextDefaults3(c *AvCodec) int { + return int(C.avcodec_get_context_defaults3((*C.struct_AVCodecContext)(ctxt), (*C.struct_AVCodec)(c))) } -func (ctxt *AVCodecContext) Frame_number() int { - return int(ctxt.frame_number) +//Copy the settings of the source AvCodecContext into the destination AvCodecContext. +func (ctxt *AvCodecContext) AvcodecCopyContext(ctxt2 *AvCodecContext) int { + return int(C.avcodec_copy_context((*C.struct_AVCodecContext)(ctxt), (*C.struct_AVCodecContext)(ctxt2))) } -func (ctxt *AVCodecContext) Frame_size() int { - return int(ctxt.frame_size) +//Initialize the AvCodecContext to use the given AvCodec +func (ctxt *AvCodecContext) AvcodecOpen2(c *AvCodec, d **AvDictionary) int { + return int(C.avcodec_open2((*C.struct_AVCodecContext)(ctxt), (*C.struct_AVCodec)(c), (**C.struct_AVDictionary)(unsafe.Pointer(d)))) } -func (ctxt *AVCodecContext) Frame_skip_cmp() int { - return int(ctxt.frame_skip_cmp) +//Close a given AvCodecContext and free all the data associated with it (but not the AvCodecContext itself). +func (ctxt *AvCodecContext) AvcodecClose() int { + return int(C.avcodec_close((*C.struct_AVCodecContext)(ctxt))) } -func (ctxt *AVCodecContext) Frame_skip_exp() int { - return int(ctxt.frame_skip_exp) +//The default callback for AvCodecContext.get_buffer2(). +func (s *AvCodecContext) AvcodecDefaultGetBuffer2(f *AvFrame, l int) int { + return int(C.avcodec_default_get_buffer2((*C.struct_AVCodecContext)(s), (*C.struct_AVFrame)(f), C.int(l))) } -func (ctxt *AVCodecContext) Frame_skip_factor() int { - return int(ctxt.frame_skip_factor) +//Modify width and height values so that they will result in a memory buffer that is acceptable for the codec if you do not use any horizontal padding. +func (ctxt *AvCodecContext) AvcodecAlignDimensions(w, h *int) { + C.avcodec_align_dimensions((*C.struct_AVCodecContext)(ctxt), (*C.int)(unsafe.Pointer(w)), (*C.int)(unsafe.Pointer(h))) } -func (ctxt *AVCodecContext) Frame_skip_threshold() int { - return int(ctxt.frame_skip_threshold) +//Modify width and height values so that they will result in a memory buffer that is acceptable for the codec if you also ensure that all line sizes are a multiple of the respective linesize_align[i]. +func (ctxt *AvCodecContext) AvcodecAlignDimensions2(w, h *int, l int) { + C.avcodec_align_dimensions2((*C.struct_AVCodecContext)(ctxt), (*C.int)(unsafe.Pointer(w)), (*C.int)(unsafe.Pointer(h)), (*C.int)(unsafe.Pointer(&l))) } -func (ctxt *AVCodecContext) Global_quality() int { - return int(ctxt.global_quality) +//Decode the audio frame of size avpkt->size from avpkt->data into frame. +func (ctxt *AvCodecContext) AvcodecDecodeAudio4(f *AvFrame, g *int, a *AvPacket) int { + return int(C.avcodec_decode_audio4((*C.struct_AVCodecContext)(ctxt), (*C.struct_AVFrame)(f), (*C.int)(unsafe.Pointer(g)), (*C.struct_AVPacket)(a))) } -func (ctxt *AVCodecContext) Gop_size() int { - return int(ctxt.gop_size) +//Decode the video frame of size avpkt->size from avpkt->data into picture. +func (ctxt *AvCodecContext) AvcodecDecodeVideo2(p *AvFrame, g *int, a *AvPacket) int { + return int(C.avcodec_decode_video2((*C.struct_AVCodecContext)(ctxt), (*C.struct_AVFrame)(p), (*C.int)(unsafe.Pointer(g)), (*C.struct_AVPacket)(a))) } -func (ctxt *AVCodecContext) Has_b_frames() int { - return int(ctxt.has_b_frames) +//Decode a subtitle message. +func (ctxt *AvCodecContext) AvcodecDecodeSubtitle2(s *AvSubtitle, g *int, a *AvPacket) int { + return int(C.avcodec_decode_subtitle2((*C.struct_AVCodecContext)(ctxt), (*C.struct_AVSubtitle)(s), (*C.int)(unsafe.Pointer(g)), (*C.struct_AVPacket)(a))) } -func (ctxt *AVCodecContext) Header_bits() int { - return int(ctxt.header_bits) +//Encode a frame of audio. +func (ctxt *AvCodecContext) AvcodecEncodeAudio2(p *AvPacket, f *AvFrame, gp *int) int { + return int(C.avcodec_encode_audio2((*C.struct_AVCodecContext)(ctxt), (*C.struct_AVPacket)(p), (*C.struct_AVFrame)(f), (*C.int)(unsafe.Pointer(gp)))) } -func (ctxt *AVCodecContext) Height() int { - return int(ctxt.height) +//Encode a frame of video +func (ctxt *AvCodecContext) AvcodecEncodeVideo2(p *AvPacket, f *AvFrame, gp *int) int { + return int(C.avcodec_encode_video2((*C.struct_AVCodecContext)(ctxt), (*C.struct_AVPacket)(p), (*C.struct_AVFrame)(f), (*C.int)(unsafe.Pointer(gp)))) } -func (ctxt *AVCodecContext) I_count() int { - return int(ctxt.i_count) -} - -func (ctxt *AVCodecContext) I_quant_factor() float64 { - return float64(ctxt.i_quant_factor) -} - -func (ctxt *AVCodecContext) I_quant_offset() float64 { - return float64(ctxt.i_quant_offset) -} - -func (ctxt *AVCodecContext) I_tex_bits() int { - return int(ctxt.i_tex_bits) -} - -func (ctxt *AVCodecContext) Idct_algo() int { - return int(ctxt.idct_algo) -} - -func (ctxt *AVCodecContext) Ildct_cmp() int { - return int(ctxt.ildct_cmp) -} - -// func (ctxt *AVCodecContext) Initial_padding() int { -// return int(ctxt.initial_padding) -// } - -func (ctxt *AVCodecContext) Intra_dc_precision() int { - return int(ctxt.intra_dc_precision) +func (ctxt *AvCodecContext) AvcodecEncodeSubtitle(b *uint8, bs int, s *AvSubtitle) int { + return int(C.avcodec_encode_subtitle((*C.struct_AVCodecContext)(ctxt), (*C.uint8_t)(b), C.int(bs), (*C.struct_AVSubtitle)(s))) } -func (ctxt *AVCodecContext) Keyint_min() int { - return int(ctxt.keyint_min) +func (ctxt *AvCodecContext) AvcodecDefaultGetFormat(f *AvPixelFormat) AvPixelFormat { + return (AvPixelFormat)(C.avcodec_default_get_format((*C.struct_AVCodecContext)(ctxt), (*C.enum_AVPixelFormat)(f))) } -func (ctxt *AVCodecContext) Last_predictor_count() int { - return int(ctxt.last_predictor_count) +//Reset the internal decoder state / flush internal buffers. +func (ctxt *AvCodecContext) AvcodecFlushBuffers() { + C.avcodec_flush_buffers((*C.struct_AVCodecContext)(ctxt)) } -func (ctxt *AVCodecContext) Level() int { - return int(ctxt.level) +//Return audio frame duration. +func (ctxt *AvCodecContext) AvGetAudioFrameDuration(f int) int { + return int(C.av_get_audio_frame_duration((*C.struct_AVCodecContext)(ctxt), C.int(f))) } -func (ctxt *AVCodecContext) Log_level_offset() int { - return int(ctxt.log_level_offset) +func (ctxt *AvCodecContext) AvcodecIsOpen() int { + return int(C.avcodec_is_open((*C.struct_AVCodecContext)(ctxt))) } -func (ctxt *AVCodecContext) Lowres() int { - return int(ctxt.lowres) +//Parse a packet. +func (ctxt *AvCodecContext) AvParserParse2(ctxtp *AvCodecParserContext, p **uint8, ps *int, b *uint8, bs int, pt, dt, po int64) int { + return int(C.av_parser_parse2((*C.struct_AVCodecParserContext)(ctxtp), (*C.struct_AVCodecContext)(ctxt), (**C.uint8_t)(unsafe.Pointer(p)), (*C.int)(unsafe.Pointer(ps)), (*C.uint8_t)(b), C.int(bs), (C.int64_t)(pt), (C.int64_t)(dt), (C.int64_t)(po))) } -func (ctxt *AVCodecContext) Lumi_masking() float64 { - return float64(ctxt.lumi_masking) +func (ctxt *AvCodecContext) AvParserChange(ctxtp *AvCodecParserContext, pb **uint8, pbs *int, b *uint8, bs, k int) int { + return int(C.av_parser_change((*C.struct_AVCodecParserContext)(ctxtp), (*C.struct_AVCodecContext)(ctxt), (**C.uint8_t)(unsafe.Pointer(pb)), (*C.int)(unsafe.Pointer(pbs)), (*C.uint8_t)(b), C.int(bs), C.int(k))) } -func (ctxt *AVCodecContext) Max_b_frames() int { - return int(ctxt.max_b_frames) +func AvParserInit(c int) *AvCodecParserContext { + return (*AvCodecParserContext)(C.av_parser_init(C.int(c))) } -func (ctxt *AVCodecContext) Max_prediction_order() int { - return int(ctxt.max_prediction_order) +func AvParserClose(ctxtp *AvCodecParserContext) { + C.av_parser_close((*C.struct_AVCodecParserContext)(ctxtp)) } -func (ctxt *AVCodecContext) Max_qdiff() int { - return int(ctxt.max_qdiff) +func (p *AvCodecParser) AvParserNext() *AvCodecParser { + return (*AvCodecParser)(C.av_parser_next((*C.struct_AVCodecParser)(p))) } -func (ctxt *AVCodecContext) Mb_cmp() int { - return int(ctxt.mb_cmp) +func (p *AvCodecParser) AvRegisterCodecParser() { + C.av_register_codec_parser((*C.struct_AVCodecParser)(p)) } - -func (ctxt *AVCodecContext) Mb_decision() int { - return int(ctxt.mb_decision) -} - -func (ctxt *AVCodecContext) Mb_lmax() int { - return int(ctxt.mb_lmax) -} - -func (ctxt *AVCodecContext) Mb_lmin() int { - return int(ctxt.mb_lmin) -} - -func (ctxt *AVCodecContext) Me_cmp() int { - return int(ctxt.me_cmp) -} - -func (ctxt *AVCodecContext) Me_penalty_compensation() int { - return int(ctxt.me_penalty_compensation) -} - -func (ctxt *AVCodecContext) Me_pre_cmp() int { - return int(ctxt.me_pre_cmp) -} - -func (ctxt *AVCodecContext) Me_range() int { - return int(ctxt.me_range) -} - -func (ctxt *AVCodecContext) Me_sub_cmp() int { - return int(ctxt.me_sub_cmp) -} - -func (ctxt *AVCodecContext) Me_subpel_quality() int { - return int(ctxt.me_subpel_quality) -} - -func (ctxt *AVCodecContext) Min_prediction_order() int { - return int(ctxt.min_prediction_order) -} - -func (ctxt *AVCodecContext) Misc_bits() int { - return int(ctxt.misc_bits) -} - -func (ctxt *AVCodecContext) Mpeg_quant() int { - return int(ctxt.mpeg_quant) -} - -func (ctxt *AVCodecContext) Mv0_threshold() int { - return int(ctxt.mv0_threshold) -} - -func (ctxt *AVCodecContext) Mv_bits() int { - return int(ctxt.mv_bits) -} - -func (ctxt *AVCodecContext) Noise_reduction() int { - return int(ctxt.noise_reduction) -} - -func (ctxt *AVCodecContext) Nsse_weight() int { - return int(ctxt.nsse_weight) -} - -func (ctxt *AVCodecContext) P_count() int { - return int(ctxt.p_count) -} - -func (ctxt *AVCodecContext) P_masking() float64 { - return float64(ctxt.p_masking) -} - -func (ctxt *AVCodecContext) P_tex_bits() int { - return int(ctxt.p_tex_bits) -} - -func (ctxt *AVCodecContext) Pre_dia_size() int { - return int(ctxt.pre_dia_size) -} - -func (ctxt *AVCodecContext) Pre_me() int { - return int(ctxt.pre_me) -} - -func (ctxt *AVCodecContext) Prediction_method() int { - return int(ctxt.prediction_method) -} - -func (ctxt *AVCodecContext) Profile() int { - return int(ctxt.profile) -} - -func (ctxt *AVCodecContext) Qblur() float64 { - return float64(ctxt.qblur) -} - -func (ctxt *AVCodecContext) Qcompress() float64 { - return float64(ctxt.qcompress) -} - -func (ctxt *AVCodecContext) Qmax() int { - return int(ctxt.qmax) -} - -func (ctxt *AVCodecContext) Qmin() int { - return int(ctxt.qmin) -} - -func (ctxt *AVCodecContext) Rc_buffer_size() int { - return int(ctxt.rc_buffer_size) -} - -func (ctxt *AVCodecContext) Rc_initial_buffer_occupancy() int { - return int(ctxt.rc_initial_buffer_occupancy) -} - -func (ctxt *AVCodecContext) Rc_max_available_vbv_use() float64 { - return float64(ctxt.rc_max_available_vbv_use) -} - -func (ctxt *AVCodecContext) Rc_max_rate() int { - return int(ctxt.rc_max_rate) -} - -func (ctxt *AVCodecContext) Rc_min_rate() int { - return int(ctxt.rc_min_rate) -} - -func (ctxt *AVCodecContext) Rc_min_vbv_overflow_use() float64 { - return float64(ctxt.rc_min_vbv_overflow_use) -} - -func (ctxt *AVCodecContext) Rc_override_count() int { - return int(ctxt.rc_override_count) -} - -func (ctxt *AVCodecContext) Refcounted_frames() int { - return int(ctxt.refcounted_frames) -} - -func (ctxt *AVCodecContext) Refs() int { - return int(ctxt.refs) -} - -func (ctxt *AVCodecContext) Rtp_payload_size() int { - return int(ctxt.rtp_payload_size) -} - -func (ctxt *AVCodecContext) Sample_rate() int { - return int(ctxt.sample_rate) -} - -func (ctxt *AVCodecContext) Scenechange_threshold() int { - return int(ctxt.scenechange_threshold) -} - -func (ctxt *AVCodecContext) Seek_preroll() int { - return int(ctxt.seek_preroll) -} - -func (ctxt *AVCodecContext) Side_data_only_packets() int { - return int(ctxt.side_data_only_packets) -} - -func (ctxt *AVCodecContext) Skip_alpha() int { - return int(ctxt.skip_alpha) -} - -func (ctxt *AVCodecContext) Skip_bottom() int { - return int(ctxt.skip_bottom) -} - -func (ctxt *AVCodecContext) Skip_count() int { - return int(ctxt.skip_count) -} - -func (ctxt *AVCodecContext) Skip_top() int { - return int(ctxt.skip_top) -} - -func (ctxt *AVCodecContext) Slice_count() int { - return int(ctxt.slice_count) -} - -func (ctxt *AVCodecContext) Slice_flags() int { - return int(ctxt.slice_flags) -} - -func (ctxt *AVCodecContext) Slices() int { - return int(ctxt.slices) -} - -func (ctxt *AVCodecContext) Spatial_cplx_masking() float64 { - return float64(ctxt.spatial_cplx_masking) -} - -func (ctxt *AVCodecContext) Strict_std_compliance() int { - return int(ctxt.strict_std_compliance) -} - -func (ctxt *AVCodecContext) Sub_charenc_mode() int { - return int(ctxt.sub_charenc_mode) -} - -func (ctxt *AVCodecContext) Subtitle_header_size() int { - return int(ctxt.subtitle_header_size) -} - -func (ctxt *AVCodecContext) Temporal_cplx_masking() float64 { - return float64(ctxt.temporal_cplx_masking) -} - -func (ctxt *AVCodecContext) Thread_count() int { - return int(ctxt.thread_count) -} - -func (ctxt *AVCodecContext) Thread_safe_callbacks() int { - return int(ctxt.thread_safe_callbacks) -} - -func (ctxt *AVCodecContext) Thread_type() int { - return int(ctxt.thread_type) -} - -func (ctxt *AVCodecContext) Ticks_per_frame() int { - return int(ctxt.ticks_per_frame) -} - -func (ctxt *AVCodecContext) Trellis() int { - return int(ctxt.trellis) -} - -func (ctxt *AVCodecContext) Width() int { - return int(ctxt.width) -} - -func (ctxt *AVCodecContext) Workaround_bugs() int { - return int(ctxt.workaround_bugs) -} - -func (ctxt *AVCodecContext) Audio_service_type() AVAudioServiceType { //enum - return (AVAudioServiceType)(ctxt.audio_service_type) -} - -func (ctxt *AVCodecContext) Chroma_sample_location() AVChromaLocation { //enum - return (AVChromaLocation)(ctxt.chroma_sample_location) -} - -func (ctxt *AVCodecContext) Codec_descriptor() *AVCodecDescriptor { //const - return (*AVCodecDescriptor)(ctxt.codec_descriptor) -} - -func (ctxt *AVCodecContext) Codec_id() AVCodecID { //enum - return (AVCodecID)(ctxt.codec_id) -} - -func (ctxt *AVCodecContext) Codec_type() AVMediaType { //enum - return (AVMediaType)(ctxt.codec_type) -} - -func (ctxt *AVCodecContext) Color_primaries() AVColorPrimaries { //enum - return (AVColorPrimaries)(ctxt.color_primaries) -} - -func (ctxt *AVCodecContext) Color_range() AVColorRange { //enum - return (AVColorRange)(ctxt.color_range) -} - -func (ctxt *AVCodecContext) Color_trc() AVColorTransferCharacteristic { //enum - return (AVColorTransferCharacteristic)(ctxt.color_trc) -} - -func (ctxt *AVCodecContext) Colorspace() AVColorSpace { //enum - return (AVColorSpace)(ctxt.colorspace) -} - -func (ctxt *AVCodecContext) Field_order() AVFieldOrder { //enum - return (AVFieldOrder)(ctxt.field_order) -} - -func (ctxt *AVCodecContext) Pix_fmt() AVPixelFormat { //enum - return (AVPixelFormat)(ctxt.pix_fmt) -} - -func (ctxt *AVCodecContext) Request_sample_fmt() AVSampleFormat { //enum - return (AVSampleFormat)(ctxt.request_sample_fmt) -} - -func (ctxt *AVCodecContext) Sample_fmt() AVSampleFormat { //enum - return (AVSampleFormat)(ctxt.sample_fmt) -} - -func (ctxt *AVCodecContext) Skip_frame() AVDiscard { //enum - return (AVDiscard)(ctxt.skip_frame) -} - -func (ctxt *AVCodecContext) Skip_idct() AVDiscard { //enum - return (AVDiscard)(ctxt.skip_idct) -} - -func (ctxt *AVCodecContext) Skip_loop_filter() AVDiscard { //enum - return (AVDiscard)(ctxt.skip_loop_filter) -} - -// func (ctxt *AVCodecContext) Sw_pix_fmt() AVPixelFormat { //enum -// return (AVPixelFormat)(ctxt.sw_pix_fmt) -// } diff --git a/avcodec/context_struct.go b/avcodec/context_struct.go new file mode 100644 index 0000000..6f13398 --- /dev/null +++ b/avcodec/context_struct.go @@ -0,0 +1,548 @@ +/* + Use of this source code is governed by a MIT license that can be found in the LICENSE file. +*/ +package avcodec + +func (ctxt *AvCodecContext) ActiveThreadType() int { + return int(ctxt.active_thread_type) +} + +func (ctxt *AvCodecContext) BFrameStrategy() int { + return int(ctxt.b_frame_strategy) +} + +func (ctxt *AvCodecContext) BQuantFactor() float64 { + return float64(ctxt.b_quant_factor) +} + +func (ctxt *AvCodecContext) BQuantOffset() float64 { + return float64(ctxt.b_quant_offset) +} + +func (ctxt *AvCodecContext) BSensitivity() int { + return int(ctxt.b_sensitivity) +} + +func (ctxt *AvCodecContext) BidirRefine() int { + return int(ctxt.bidir_refine) +} + +func (ctxt *AvCodecContext) BitRate() int { + return int(ctxt.bit_rate) +} + +func (ctxt *AvCodecContext) BitRateTolerance() int { + return int(ctxt.bit_rate_tolerance) +} + +func (ctxt *AvCodecContext) BitsPerCodedSample() int { + return int(ctxt.bits_per_coded_sample) +} + +func (ctxt *AvCodecContext) BitsPerRawSample() int { + return int(ctxt.bits_per_raw_sample) +} + +func (ctxt *AvCodecContext) BlockAlign() int { + return int(ctxt.block_align) +} + +func (ctxt *AvCodecContext) BrdScale() int { + return int(ctxt.brd_scale) +} + +func (ctxt *AvCodecContext) Channels() int { + return int(ctxt.channels) +} + +func (ctxt *AvCodecContext) Chromaoffset() int { + return int(ctxt.chromaoffset) +} + +func (ctxt *AvCodecContext) CodedHeight() int { + return int(ctxt.coded_height) +} + +func (ctxt *AvCodecContext) CodedWidth() int { + return int(ctxt.coded_width) +} + +func (ctxt *AvCodecContext) CoderType() int { + return int(ctxt.coder_type) +} + +func (ctxt *AvCodecContext) CompressionLevel() int { + return int(ctxt.compression_level) +} + +func (ctxt *AvCodecContext) ContextModel() int { + return int(ctxt.context_model) +} + +func (ctxt *AvCodecContext) Cutoff() int { + return int(ctxt.cutoff) +} + +func (ctxt *AvCodecContext) DarkMasking() float64 { + return float64(ctxt.dark_masking) +} + +func (ctxt *AvCodecContext) DctAlgo() int { + return int(ctxt.dct_algo) +} + +func (ctxt *AvCodecContext) Debug() int { + return int(ctxt.debug) +} + +func (ctxt *AvCodecContext) DebugMv() int { + return int(ctxt.debug_mv) +} + +func (ctxt *AvCodecContext) Delay() int { + return int(ctxt.delay) +} + +func (ctxt *AvCodecContext) DiaSize() int { + return int(ctxt.dia_size) +} + +func (ctxt *AvCodecContext) ErrRecognition() int { + return int(ctxt.err_recognition) +} + +func (ctxt *AvCodecContext) ErrorConcealment() int { + return int(ctxt.error_concealment) +} + +func (ctxt *AvCodecContext) ExtradataSize() int { + return int(ctxt.extradata_size) +} + +func (ctxt *AvCodecContext) Flags() int { + return int(ctxt.flags) +} + +func (ctxt *AvCodecContext) Flags2() int { + return int(ctxt.flags2) +} + +func (ctxt *AvCodecContext) FrameBits() int { + return int(ctxt.frame_bits) +} + +func (ctxt *AvCodecContext) FrameNumber() int { + return int(ctxt.frame_number) +} + +func (ctxt *AvCodecContext) FrameSize() int { + return int(ctxt.frame_size) +} + +func (ctxt *AvCodecContext) FrameSkipCmp() int { + return int(ctxt.frame_skip_cmp) +} + +func (ctxt *AvCodecContext) FrameSkipExp() int { + return int(ctxt.frame_skip_exp) +} + +func (ctxt *AvCodecContext) FrameSkipFactor() int { + return int(ctxt.frame_skip_factor) +} + +func (ctxt *AvCodecContext) FrameSkipThreshold() int { + return int(ctxt.frame_skip_threshold) +} + +func (ctxt *AvCodecContext) GlobalQuality() int { + return int(ctxt.global_quality) +} + +func (ctxt *AvCodecContext) GopSize() int { + return int(ctxt.gop_size) +} + +func (ctxt *AvCodecContext) HasBFrames() int { + return int(ctxt.has_b_frames) +} + +func (ctxt *AvCodecContext) HeaderBits() int { + return int(ctxt.header_bits) +} + +func (ctxt *AvCodecContext) Height() int { + return int(ctxt.height) +} + +func (ctxt *AvCodecContext) ICount() int { + return int(ctxt.i_count) +} + +func (ctxt *AvCodecContext) IQuantFactor() float64 { + return float64(ctxt.i_quant_factor) +} + +func (ctxt *AvCodecContext) IQuantOffset() float64 { + return float64(ctxt.i_quant_offset) +} + +func (ctxt *AvCodecContext) ITexBits() int { + return int(ctxt.i_tex_bits) +} + +func (ctxt *AvCodecContext) IdctAlgo() int { + return int(ctxt.idct_algo) +} + +func (ctxt *AvCodecContext) IldctCmp() int { + return int(ctxt.ildct_cmp) +} + +func (ctxt *AvCodecContext) IntraDcPrecision() int { + return int(ctxt.intra_dc_precision) +} + +func (ctxt *AvCodecContext) KeyintMin() int { + return int(ctxt.keyint_min) +} + +func (ctxt *AvCodecContext) LastPredictorCount() int { + return int(ctxt.last_predictor_count) +} + +func (ctxt *AvCodecContext) Level() int { + return int(ctxt.level) +} + +func (ctxt *AvCodecContext) LogLevelOffset() int { + return int(ctxt.log_level_offset) +} + +func (ctxt *AvCodecContext) Lowres() int { + return int(ctxt.lowres) +} + +func (ctxt *AvCodecContext) LumiMasking() float64 { + return float64(ctxt.lumi_masking) +} + +func (ctxt *AvCodecContext) MaxBFrames() int { + return int(ctxt.max_b_frames) +} + +func (ctxt *AvCodecContext) MaxPredictionOrder() int { + return int(ctxt.max_prediction_order) +} + +func (ctxt *AvCodecContext) MaxQdiff() int { + return int(ctxt.max_qdiff) +} + +func (ctxt *AvCodecContext) MbCmp() int { + return int(ctxt.mb_cmp) +} + +func (ctxt *AvCodecContext) MbDecision() int { + return int(ctxt.mb_decision) +} + +func (ctxt *AvCodecContext) MbLmax() int { + return int(ctxt.mb_lmax) +} + +func (ctxt *AvCodecContext) MbLmin() int { + return int(ctxt.mb_lmin) +} + +func (ctxt *AvCodecContext) MeCmp() int { + return int(ctxt.me_cmp) +} + +func (ctxt *AvCodecContext) MePenaltyCompensation() int { + return int(ctxt.me_penalty_compensation) +} + +func (ctxt *AvCodecContext) MePreCmp() int { + return int(ctxt.me_pre_cmp) +} + +func (ctxt *AvCodecContext) MeRange() int { + return int(ctxt.me_range) +} + +func (ctxt *AvCodecContext) MeSubCmp() int { + return int(ctxt.me_sub_cmp) +} + +func (ctxt *AvCodecContext) MeSubpelQuality() int { + return int(ctxt.me_subpel_quality) +} + +func (ctxt *AvCodecContext) MinPredictionOrder() int { + return int(ctxt.min_prediction_order) +} + +func (ctxt *AvCodecContext) MiscBits() int { + return int(ctxt.misc_bits) +} + +func (ctxt *AvCodecContext) MpegQuant() int { + return int(ctxt.mpeg_quant) +} + +func (ctxt *AvCodecContext) Mv0Threshold() int { + return int(ctxt.mv0_threshold) +} + +func (ctxt *AvCodecContext) MvBits() int { + return int(ctxt.mv_bits) +} + +func (ctxt *AvCodecContext) NoiseReduction() int { + return int(ctxt.noise_reduction) +} + +func (ctxt *AvCodecContext) NsseWeight() int { + return int(ctxt.nsse_weight) +} + +func (ctxt *AvCodecContext) PCount() int { + return int(ctxt.p_count) +} + +func (ctxt *AvCodecContext) PMasking() float64 { + return float64(ctxt.p_masking) +} + +func (ctxt *AvCodecContext) PTexBits() int { + return int(ctxt.p_tex_bits) +} + +func (ctxt *AvCodecContext) PreDiaSize() int { + return int(ctxt.pre_dia_size) +} + +func (ctxt *AvCodecContext) PreMe() int { + return int(ctxt.pre_me) +} + +func (ctxt *AvCodecContext) PredictionMethod() int { + return int(ctxt.prediction_method) +} + +func (ctxt *AvCodecContext) Profile() int { + return int(ctxt.profile) +} + +func (ctxt *AvCodecContext) Qblur() float64 { + return float64(ctxt.qblur) +} + +func (ctxt *AvCodecContext) Qcompress() float64 { + return float64(ctxt.qcompress) +} + +func (ctxt *AvCodecContext) Qmax() int { + return int(ctxt.qmax) +} + +func (ctxt *AvCodecContext) Qmin() int { + return int(ctxt.qmin) +} + +func (ctxt *AvCodecContext) RcBufferSize() int { + return int(ctxt.rc_buffer_size) +} + +func (ctxt *AvCodecContext) RcInitialBufferOccupancy() int { + return int(ctxt.rc_initial_buffer_occupancy) +} + +func (ctxt *AvCodecContext) RcMaxAvailableVbvUse() float64 { + return float64(ctxt.rc_max_available_vbv_use) +} + +func (ctxt *AvCodecContext) RcMaxRate() int { + return int(ctxt.rc_max_rate) +} + +func (ctxt *AvCodecContext) RcMinRate() int { + return int(ctxt.rc_min_rate) +} + +func (ctxt *AvCodecContext) RcMinVbvOverflowUse() float64 { + return float64(ctxt.rc_min_vbv_overflow_use) +} + +func (ctxt *AvCodecContext) RcOverrideCount() int { + return int(ctxt.rc_override_count) +} + +func (ctxt *AvCodecContext) RefcountedFrames() int { + return int(ctxt.refcounted_frames) +} + +func (ctxt *AvCodecContext) Refs() int { + return int(ctxt.refs) +} + +func (ctxt *AvCodecContext) RtpPayloadSize() int { + return int(ctxt.rtp_payload_size) +} + +func (ctxt *AvCodecContext) SampleRate() int { + return int(ctxt.sample_rate) +} + +func (ctxt *AvCodecContext) ScenechangeThreshold() int { + return int(ctxt.scenechange_threshold) +} + +func (ctxt *AvCodecContext) SeekPreroll() int { + return int(ctxt.seek_preroll) +} + +func (ctxt *AvCodecContext) SideDataOnlyPackets() int { + return int(ctxt.side_data_only_packets) +} + +func (ctxt *AvCodecContext) SkipAlpha() int { + return int(ctxt.skip_alpha) +} + +func (ctxt *AvCodecContext) SkipBottom() int { + return int(ctxt.skip_bottom) +} + +func (ctxt *AvCodecContext) SkipCount() int { + return int(ctxt.skip_count) +} + +func (ctxt *AvCodecContext) SkipTop() int { + return int(ctxt.skip_top) +} + +func (ctxt *AvCodecContext) SliceCount() int { + return int(ctxt.slice_count) +} + +func (ctxt *AvCodecContext) SliceFlags() int { + return int(ctxt.slice_flags) +} + +func (ctxt *AvCodecContext) Slices() int { + return int(ctxt.slices) +} + +func (ctxt *AvCodecContext) SpatialCplxMasking() float64 { + return float64(ctxt.spatial_cplx_masking) +} + +func (ctxt *AvCodecContext) StrictStdCompliance() int { + return int(ctxt.strict_std_compliance) +} + +func (ctxt *AvCodecContext) SubCharencMode() int { + return int(ctxt.sub_charenc_mode) +} + +func (ctxt *AvCodecContext) SubtitleHeaderSize() int { + return int(ctxt.subtitle_header_size) +} + +func (ctxt *AvCodecContext) TemporalCplxMasking() float64 { + return float64(ctxt.temporal_cplx_masking) +} + +func (ctxt *AvCodecContext) ThreadCount() int { + return int(ctxt.thread_count) +} + +func (ctxt *AvCodecContext) ThreadSafeCallbacks() int { + return int(ctxt.thread_safe_callbacks) +} + +func (ctxt *AvCodecContext) ThreadType() int { + return int(ctxt.thread_type) +} + +func (ctxt *AvCodecContext) TicksPerFrame() int { + return int(ctxt.ticks_per_frame) +} + +func (ctxt *AvCodecContext) Trellis() int { + return int(ctxt.trellis) +} + +func (ctxt *AvCodecContext) Width() int { + return int(ctxt.width) +} + +func (ctxt *AvCodecContext) WorkaroundBugs() int { + return int(ctxt.workaround_bugs) +} + +func (ctxt *AvCodecContext) AudioServiceType() AvAudioServiceType { + return (AvAudioServiceType)(ctxt.audio_service_type) +} + +func (ctxt *AvCodecContext) ChromaSampleLocation() AvChromaLocation { + return (AvChromaLocation)(ctxt.chroma_sample_location) +} + +func (ctxt *AvCodecContext) CodecDescriptor() *AvCodecDescriptor { + return (*AvCodecDescriptor)(ctxt.codec_descriptor) +} + +func (ctxt *AvCodecContext) CodecId() AvCodecId { + return (AvCodecId)(ctxt.codec_id) +} + +func (ctxt *AvCodecContext) CodecType() AvMediaType { + return (AvMediaType)(ctxt.codec_type) +} + +func (ctxt *AvCodecContext) ColorPrimaries() AvColorPrimaries { + return (AvColorPrimaries)(ctxt.color_primaries) +} + +func (ctxt *AvCodecContext) ColorRange() AvColorRange { + return (AvColorRange)(ctxt.color_range) +} + +func (ctxt *AvCodecContext) ColorTrc() AvColorTransferCharacteristic { + return (AvColorTransferCharacteristic)(ctxt.color_trc) +} + +func (ctxt *AvCodecContext) Colorspace() AvColorSpace { + return (AvColorSpace)(ctxt.colorspace) +} + +func (ctxt *AvCodecContext) FieldOrder() AvFieldOrder { + return (AvFieldOrder)(ctxt.field_order) +} + +func (ctxt *AvCodecContext) PixFmt() AvPixelFormat { + return (AvPixelFormat)(ctxt.pix_fmt) +} + +func (ctxt *AvCodecContext) RequestSampleFmt() AvSampleFormat { + return (AvSampleFormat)(ctxt.request_sample_fmt) +} + +func (ctxt *AvCodecContext) SampleFmt() AvSampleFormat { + return (AvSampleFormat)(ctxt.sample_fmt) +} + +func (ctxt *AvCodecContext) SkipFrame() AvDiscard { + return (AvDiscard)(ctxt.skip_frame) +} + +func (ctxt *AvCodecContext) SkipIdct() AvDiscard { + return (AvDiscard)(ctxt.skip_idct) +} + +func (ctxt *AvCodecContext) SkipLoopFilter() AvDiscard { + return (AvDiscard)(ctxt.skip_loop_filter) +} diff --git a/avcodec/packet.go b/avcodec/packet.go index 0594882..9446be7 100644 --- a/avcodec/packet.go +++ b/avcodec/packet.go @@ -1,39 +1,115 @@ /* - Use of this source code is governed by a MIT license that can be found in the LICENSE file. - by Giorgis (habtom@giorgis.io) + AvPackets */ package avcodec -func (p *AVPacket) Buf() *AVBufferRef { - return (*AVBufferRef)(p.buf) +//#cgo pkg-config: libavcodec +//#include +import "C" +import ( + "unsafe" +) + +//Initialize optional fields of a packet with default values. +func (p *AvPacket) AvInitPacket() { + C.av_init_packet((*C.struct_AVPacket)(p)) } -func (p *AVPacket) Duration() int { - return int(p.duration) + +//Allocate the payload of a packet and initialize its fields with default values. +func (p *AvPacket) AvNewPacket(s int) int { + return int(C.av_new_packet((*C.struct_AVPacket)(p), C.int(s))) } -func (p *AVPacket) Flags() int { - return int(p.flags) + +//Reduce packet size, correctly zeroing padding. +func (p *AvPacket) AvShrinkPacket(s int) { + C.av_shrink_packet((*C.struct_AVPacket)(p), C.int(s)) } -func (p *AVPacket) Side_data_elems() int { - return int(p.side_data_elems) + +//Increase packet size, correctly zeroing padding. +func (p *AvPacket) AvGrowPacket(s int) int { + return int(C.av_grow_packet((*C.struct_AVPacket)(p), C.int(s))) } -func (p *AVPacket) Size() int { - return int(p.size) + +//Initialize a reference-counted packet from av_malloc()ed data. +func (p *AvPacket) AvPacketFromData(d *uint8, s int) int { + return int(C.av_packet_from_data((*C.struct_AVPacket)(p), (*C.uint8_t)(d), C.int(s))) + } -func (p *AVPacket) Stream_index() int { - return int(p.stream_index) + +func (p *AvPacket) AvDupPacket() int { + return int(C.av_dup_packet((*C.struct_AVPacket)(p))) + } -func (p *AVPacket) Convergence_duration() int64 { - return int64(p.convergence_duration) + +//Copy packet, including contents. +func (p *AvPacket) AvCopyPacket(r *AvPacket) int { + return int(C.av_copy_packet((*C.struct_AVPacket)(p), (*C.struct_AVPacket)(r))) + } -func (p *AVPacket) Dts() int64 { - return int64(p.dts) + +//Copy packet side data. +func (p *AvPacket) AvCopyPacketSideData(r *AvPacket) int { + return int(C.av_copy_packet_side_data((*C.struct_AVPacket)(p), (*C.struct_AVPacket)(r))) + } -func (p *AVPacket) Pos() int64 { - return int64(p.pos) + +//Free a packet. +func (p *AvPacket) AvFreePacket() { + C.av_free_packet((*C.struct_AVPacket)(p)) + } -func (p *AVPacket) Pts() int64 { - return int64(p.pts) + +//Allocate new information of a packet. +func (p *AvPacket) AvPacketNewSideData(t AvPacketSideDataType, s int) *uint8 { + return (*uint8)(C.av_packet_new_side_data((*C.struct_AVPacket)(p), (C.enum_AVPacketSideDataType)(t), C.int(s))) } -func (p *AVPacket) Data() *uint8 { - return (*uint8)(p.data) + +//Shrink the already allocated side data buffer. +func (p *AvPacket) AvPacketShrinkSideData(t AvPacketSideDataType, s int) int { + return int(C.av_packet_shrink_side_data((*C.struct_AVPacket)(p), (C.enum_AVPacketSideDataType)(t), C.int(s))) +} + +//Get side information from packet. +func (p *AvPacket) AvPacketGetSideData(t AvPacketSideDataType, s *int) *uint8 { + return (*uint8)(C.av_packet_get_side_data((*C.struct_AVPacket)(p), (C.enum_AVPacketSideDataType)(t), (*C.int)(unsafe.Pointer(s)))) +} + +//int av_packet_merge_side_data (AvPacket *pkt) +func (p *AvPacket) AvPacketMergeSideData() int { + return int(C.av_packet_merge_side_data((*C.struct_AVPacket)(p))) +} + +//int av_packet_split_side_data (AvPacket *pkt) +func (p *AvPacket) AvPacketSplitSideData() int { + return int(C.av_packet_split_side_data((*C.struct_AVPacket)(p))) +} + +//Convenience function to free all the side data stored. +func (p *AvPacket) AvPacketFreeSideData() { + C.av_packet_free_side_data((*C.struct_AVPacket)(p)) +} + +//Setup a new reference to the data described by a given packet. +func (p *AvPacket) AvPacketRef(s *AvPacket) int { + return int(C.av_packet_ref((*C.struct_AVPacket)(p), (*C.struct_AVPacket)(s))) +} + +//Wipe the packet. +func (p *AvPacket) AvPacketUnref() { + C.av_packet_unref((*C.struct_AVPacket)(p)) +} + +//Move every field in src to dst and reset src. +func (p *AvPacket) AvPacketMoveRef(s *AvPacket) { + C.av_packet_move_ref((*C.struct_AVPacket)(p), (*C.struct_AVPacket)(s)) +} + +//Copy only "properties" fields from src to dst. +func (p *AvPacket) AvPacketCopyProps(s *AvPacket) int { + return int(C.av_packet_copy_props((*C.struct_AVPacket)(p), (*C.struct_AVPacket)(s))) +} + +//Convert valid timing fields (timestamps / durations) in a packet from one timebase to another. +func (p *AvPacket) AvPacketRescaleTs(r, r2 AvRational) { + C.av_packet_rescale_ts((*C.struct_AVPacket)(p), (C.struct_AVRational)(r), (C.struct_AVRational)(r2)) } diff --git a/avcodec/packet_struct.go b/avcodec/packet_struct.go new file mode 100644 index 0000000..b0be2dd --- /dev/null +++ b/avcodec/packet_struct.go @@ -0,0 +1,39 @@ +/* + Use of this source code is governed by a MIT license that can be found in the LICENSE file. + by Giorgis (habtom@giorgis.io) +*/ +package avcodec + +func (p *AvPacket) Buf() *AvBufferRef { + return (*AvBufferRef)(p.buf) +} +func (p *AvPacket) Duration() int { + return int(p.duration) +} +func (p *AvPacket) Flags() int { + return int(p.flags) +} +func (p *AvPacket) SideDataElems() int { + return int(p.side_data_elems) +} +func (p *AvPacket) Size() int { + return int(p.size) +} +func (p *AvPacket) StreamIndex() int { + return int(p.stream_index) +} +func (p *AvPacket) ConvergenceDuration() int64 { + return int64(p.convergence_duration) +} +func (p *AvPacket) Dts() int64 { + return int64(p.dts) +} +func (p *AvPacket) Pos() int64 { + return int64(p.pos) +} +func (p *AvPacket) Pts() int64 { + return int64(p.pts) +} +func (p *AvPacket) Data() *uint8 { + return (*uint8)(p.data) +} diff --git a/avcodec/pixelformat.go b/avcodec/pixelformat.go new file mode 100644 index 0000000..c81e91a --- /dev/null +++ b/avcodec/pixelformat.go @@ -0,0 +1,34 @@ +/* + AvPixelFormat +*/ +package avcodec + +//#cgo pkg-config: libavcodec +//#include +import "C" +import ( + "unsafe" +) + +//Utility function to access log2_chroma_w log2_chroma_h from the pixel format AvPixFmtDescriptor. +func (p AvPixelFormat) Avcodec_get_chroma_sub_sample(h, v *int) { + C.avcodec_get_chroma_sub_sample((C.enum_AVPixelFormat)(p), (*C.int)(unsafe.Pointer(h)), (*C.int)(unsafe.Pointer(v))) +} + +//Return a value representing the fourCC code associated to the pixel format pix_fmt, or 0 if no associated fourCC code can be found. +func (p AvPixelFormat) Avcodec_pix_fmt_to_codec_tag() uint { + return uint(C.avcodec_pix_fmt_to_codec_tag((C.enum_AVPixelFormat)(p))) +} + +func (p AvPixelFormat) Avcodec_get_pix_fmt_loss(f AvPixelFormat, a int) int { + return int(C.avcodec_get_pix_fmt_loss((C.enum_AVPixelFormat)(p), (C.enum_AVPixelFormat)(f), C.int(a))) +} + +//Find the best pixel format to convert to given a certain source pixel format. +func (p *AvPixelFormat) Avcodec_find_best_pix_fmt_of_list(s AvPixelFormat, a int, l *int) AvPixelFormat { + return (AvPixelFormat)(C.avcodec_find_best_pix_fmt_of_list((*C.enum_AVPixelFormat)(p), (C.enum_AVPixelFormat)(s), C.int(a), (*C.int)(unsafe.Pointer(l)))) +} + +func (p AvPixelFormat) Avcodec_find_best_pix_fmt_of_2(f2, s AvPixelFormat, a int, l *int) AvPixelFormat { + return (AvPixelFormat)(C.avcodec_find_best_pix_fmt_of_2((C.enum_AVPixelFormat)(p), (C.enum_AVPixelFormat)(f2), (C.enum_AVPixelFormat)(s), C.int(a), (*C.int)(unsafe.Pointer(l)))) +} diff --git a/avdevice/avdevice.go b/avdevice/avdevice.go index 8e9df73..5868556 100644 --- a/avdevice/avdevice.go +++ b/avdevice/avdevice.go @@ -19,20 +19,20 @@ import ( ) type ( - AVDeviceRect C.struct_AVDeviceRect - AVDeviceCapabilitiesQuery C.struct_AVDeviceCapabilitiesQuery - AVDeviceInfo C.struct_AVDeviceInfo - AVDeviceInfoList C.struct_AVDeviceInfoList - AVInputFormat C.struct_AVInputFormat - AVOutputFormat C.struct_AVOutputFormat - AVFormatContext C.struct_AVFormatContext - AVDictionary C.struct_AVDictionary - AVAppToDevMessageType C.enum_AVAppToDevMessageType - AVDevToAppMessageType C.enum_AVDevToAppMessageType + AvDeviceRect C.struct_AVDeviceRect + AvDeviceCapabilitiesQuery C.struct_AVDeviceCapabilitiesQuery + AvDeviceInfo C.struct_AVDeviceInfo + AvDeviceInfoList C.struct_AVDeviceInfoList + AvInputFormat C.struct_AVInputFormat + AvOutputFormat C.struct_AVOutputFormat + AvFormatContext C.struct_AVFormatContext + AvDictionary C.struct_AVDictionary + AvAppToDevMessageType C.enum_AVAppToDevMessageType + AvDevToAppMessageType C.enum_AVDevToAppMessageType ) //unsigned avdevice_version (void) -//Return the LIBAVDEVICE_VERSION_INT constant. +//Return the LIBAvDEVICE_VERSION_INT constant. func Avdevice_version() uint { return uint(C.avdevice_version()) } @@ -55,73 +55,73 @@ func Avdevice_register_all() { C.avdevice_register_all() } -//AVInputFormat * av_input_audio_device_next (AVInputFormat *d) +//AvInputFormat * av_input_audio_device_next (AvInputFormat *d) //Audio input devices iterator. -func Av_input_audio_device_next(d *AVInputFormat) *AVInputFormat { - return (*AVInputFormat)(C.av_input_audio_device_next((*C.struct_AVInputFormat)(d))) +func Av_input_audio_device_next(d *AvInputFormat) *AvInputFormat { + return (*AvInputFormat)(C.av_input_audio_device_next((*C.struct_AVInputFormat)(d))) } -//AVInputFormat * av_input_video_device_next (AVInputFormat *d) +//AvInputFormat * av_input_video_device_next (AvInputFormat *d) //Video input devices iterator. -func Av_input_video_device_next(d *AVInputFormat) *AVInputFormat { - return (*AVInputFormat)(C.av_input_video_device_next((*C.struct_AVInputFormat)(d))) +func Av_input_video_device_next(d *AvInputFormat) *AvInputFormat { + return (*AvInputFormat)(C.av_input_video_device_next((*C.struct_AVInputFormat)(d))) } -//AVOutputFormat * av_output_audio_device_next (AVOutputFormat *d) +//AvOutputFormat * av_output_audio_device_next (AvOutputFormat *d) //Audio output devices iterator. -func Av_output_audio_device_next(d *AVOutputFormat) *AVOutputFormat { - return (*AVOutputFormat)(C.av_output_audio_device_next((*C.struct_AVOutputFormat)(d))) +func Av_output_audio_device_next(d *AvOutputFormat) *AvOutputFormat { + return (*AvOutputFormat)(C.av_output_audio_device_next((*C.struct_AVOutputFormat)(d))) } -//AVOutputFormat * av_output_video_device_next (AVOutputFormat *d) +//AvOutputFormat * av_output_video_device_next (AvOutputFormat *d) //Video output devices iterator. -func Av_output_video_device_next(d *AVOutputFormat) *AVOutputFormat { - return (*AVOutputFormat)(C.av_output_video_device_next((*C.struct_AVOutputFormat)(d))) +func Av_output_video_device_next(d *AvOutputFormat) *AvOutputFormat { + return (*AvOutputFormat)(C.av_output_video_device_next((*C.struct_AVOutputFormat)(d))) } -//int avdevice_app_to_dev_control_message (struct AVFormatContext *s, enum AVAppToDevMessageType type, void *data, size_t data_size) +//int avdevice_app_to_dev_control_message (struct AvFormatContext *s, enum AvAppToDevMessageType type, void *data, size_t data_size) //Send control message from application to device. -func Avdevice_app_to_dev_control_message(s *AVFormatContext, m AVAppToDevMessageType, da int, d uintptr) int { +func Avdevice_app_to_dev_control_message(s *AvFormatContext, m AvAppToDevMessageType, da int, d uintptr) int { return int(C.avdevice_app_to_dev_control_message((*C.struct_AVFormatContext)(s), (C.enum_AVAppToDevMessageType)(m), unsafe.Pointer(&da), C.size_t(d))) } -//int avdevice_dev_to_app_control_message (struct AVFormatContext *s, enum AVDevToAppMessageType type, void *data, size_t data_size) +//int avdevice_dev_to_app_control_message (struct AvFormatContext *s, enum AvDevToAppMessageType type, void *data, size_t data_size) //Send control message from device to application. -func Avdevice_dev_to_app_control_message(fcxt *AVFormatContext, m AVDevToAppMessageType, da int, d uintptr) int { +func Avdevice_dev_to_app_control_message(fcxt *AvFormatContext, m AvDevToAppMessageType, da int, d uintptr) int { return int(C.avdevice_dev_to_app_control_message((*C.struct_AVFormatContext)(fcxt), (C.enum_AVDevToAppMessageType)(m), unsafe.Pointer(&da), C.size_t(d))) } -//int avdevice_capabilities_create (AVDeviceCapabilitiesQuery **caps, AVFormatContext *s, AVDictionary **device_options) -//Initialize capabilities probing API based on AVOption API. -func Avdevice_capabilities_create(c **AVDeviceCapabilitiesQuery, s *AVFormatContext, d **AVDictionary) int { +//int avdevice_capabilities_create (AvDeviceCapabilitiesQuery **caps, AvFormatContext *s, AvDictionary **device_options) +//Initialize capabilities probing API based on AvOption API. +func Avdevice_capabilities_create(c **AvDeviceCapabilitiesQuery, s *AvFormatContext, d **AvDictionary) int { return int(C.avdevice_capabilities_create((**C.struct_AVDeviceCapabilitiesQuery)(unsafe.Pointer(c)), (*C.struct_AVFormatContext)(s), (**C.struct_AVDictionary)(unsafe.Pointer(d)))) } -//void avdevice_capabilities_free (AVDeviceCapabilitiesQuery **caps, AVFormatContext *s) +//void avdevice_capabilities_free (AvDeviceCapabilitiesQuery **caps, AvFormatContext *s) //Free resources created by avdevice_capabilities_create() -func Avdevice_capabilities_free(c **AVDeviceCapabilitiesQuery, s *AVFormatContext) { +func Avdevice_capabilities_free(c **AvDeviceCapabilitiesQuery, s *AvFormatContext) { C.avdevice_capabilities_free((**C.struct_AVDeviceCapabilitiesQuery)(unsafe.Pointer(c)), (*C.struct_AVFormatContext)(s)) } -//int avdevice_list_devices (struct AVFormatContext *s, AVDeviceInfoList **device_list) +//int avdevice_list_devices (struct AvFormatContext *s, AvDeviceInfoList **device_list) //List devices. -func Avdevice_list_devices(s *AVFormatContext, d **AVDeviceInfoList) int { +func Avdevice_list_devices(s *AvFormatContext, d **AvDeviceInfoList) int { return int(C.avdevice_list_devices((*C.struct_AVFormatContext)(s), (**C.struct_AVDeviceInfoList)(unsafe.Pointer(d)))) } -//void avdevice_free_list_devices (AVDeviceInfoList **device_list) +//void avdevice_free_list_devices (AvDeviceInfoList **device_list) //Convenient function to free result of avdevice_list_devices(). -func Avdevice_free_list_devices(d **AVDeviceInfoList) { +func Avdevice_free_list_devices(d **AvDeviceInfoList) { C.avdevice_free_list_devices((**C.struct_AVDeviceInfoList)(unsafe.Pointer(d))) } -// //int avdevice_list_input_sources (struct AVInputFormat *device, const char *device_name, AVDictionary *device_options, AVDeviceInfoList **device_list) +// //int avdevice_list_input_sources (struct AvInputFormat *device, const char *device_name, AvDictionary *device_options, AvDeviceInfoList **device_list) // //List devices. -// func Avdevice_list_input_sources(d *AVInputFormat, dv string, do *AVDictionary, dl **AVDeviceInfoList) int { +// func Avdevice_list_input_sources(d *AvInputFormat, dv string, do *AvDictionary, dl **AvDeviceInfoList) int { // return int(C.avdevice_list_input_sources((*C.struct_AVInputFormat)(d), C.CString(dv), (*C.struct_AVDictionary)(do), (**C.struct_AVDeviceInfoList)(unsafe.Pointer(dl)))) // } -// //int avdevice_list_output_sinks (struct AVOutputFormat *device, const char *device_name, AVDictionary *device_options, AVDeviceInfoList **device_list) -// func Avdevice_list_output_sinks(d *AVOutputFormat, dn string, di *AVDictionary, dl **AVDeviceInfoList) int { +// //int avdevice_list_output_sinks (struct AvOutputFormat *device, const char *device_name, AvDictionary *device_options, AvDeviceInfoList **device_list) +// func Avdevice_list_output_sinks(d *AvOutputFormat, dn string, di *AvDictionary, dl **AvDeviceInfoList) int { // return int(C.avdevice_list_output_sinks((*C.struct_AVOutputFormat)(d), C.CString(dn), (*C.struct_AVDictionary)(di), (**C.struct_AVDeviceInfoList)(unsafe.Pointer(dl)))) // } diff --git a/avfilter/avfilter.go b/avfilter/avfilter.go index e2dd323..1d94750 100644 --- a/avfilter/avfilter.go +++ b/avfilter/avfilter.go @@ -18,21 +18,21 @@ import ( ) type ( - AVFilter C.struct_AVFilter - AVFilterContext C.struct_AVFilterContext - AVFilterLink C.struct_AVFilterLink - AVFilterGraph C.struct_AVFilterGraph - AVFilterInOut C.struct_AVFilterInOut - AVFilterPad C.struct_AVFilterPad - AVDictionary C.struct_AVDictionary - AVClass C.struct_AVClass + AvFilter C.struct_AVFilter + AvFilterContext C.struct_AVFilterContext + AvFilterLink C.struct_AVFilterLink + AvFilterGraph C.struct_AVFilterGraph + AvFilterInOut C.struct_AVFilterInOut + AvFilterPad C.struct_AVFilterPad + AvDictionary C.struct_AVDictionary + AvClass C.struct_AVClass ) type ( - AVMediaType C.enum_AVMediaType + AvMediaType C.enum_AVMediaType ) //unsigned avfilter_version (void) -//Return the LIBAVFILTER_VERSION_INT constant. +//Return the LIBAvFILTER_VERSION_INT constant. func Avfilter_version() uint { return uint(C.avfilter_version()) } @@ -49,57 +49,57 @@ func Avfilter_license() string { return C.GoString(C.avfilter_license()) } -//int avfilter_pad_count (const AVFilterPad *pads) -//Get the number of elements in a NULL-terminated array of AVFilterPads (e.g. -func Avfilter_pad_count(p *AVFilterPad) int { +//int avfilter_pad_count (const AvFilterPad *pads) +//Get the number of elements in a NULL-terminated array of AvFilterPads (e.g. +func Avfilter_pad_count(p *AvFilterPad) int { return int(C.avfilter_pad_count((*C.struct_AVFilterPad)(p))) } -//const char * avfilter_pad_get_name (const AVFilterPad *pads, int pad_idx) -//Get the name of an AVFilterPad. -func Avfilter_pad_get_name(p *AVFilterPad, pi int) string { +//const char * avfilter_pad_get_name (const AvFilterPad *pads, int pad_idx) +//Get the name of an AvFilterPad. +func Avfilter_pad_get_name(p *AvFilterPad, pi int) string { return C.GoString(C.avfilter_pad_get_name((*C.struct_AVFilterPad)(p), C.int(pi))) } -//enum AVMediaType avfilter_pad_get_type (const AVFilterPad *pads, int pad_idx) -//Get the type of an AVFilterPad. -func Avfilter_pad_get_type(p *AVFilterPad, pi int) AVMediaType { - return (AVMediaType)(C.avfilter_pad_get_type((*C.struct_AVFilterPad)(p), C.int(pi))) +//enum AvMediaType avfilter_pad_get_type (const AvFilterPad *pads, int pad_idx) +//Get the type of an AvFilterPad. +func Avfilter_pad_get_type(p *AvFilterPad, pi int) AvMediaType { + return (AvMediaType)(C.avfilter_pad_get_type((*C.struct_AVFilterPad)(p), C.int(pi))) } -//int avfilter_link (AVFilterContext *src, unsigned srcpad, AVFilterContext *dst, unsigned dstpad) +//int avfilter_link (AvFilterContext *src, unsigned srcpad, AvFilterContext *dst, unsigned dstpad) //Link two filters together. -func Avfilter_link(s *AVFilterContext, sp uint, d *AVFilterContext, dp uint) int { +func Avfilter_link(s *AvFilterContext, sp uint, d *AvFilterContext, dp uint) int { return int(C.avfilter_link((*C.struct_AVFilterContext)(s), C.uint(sp), (*C.struct_AVFilterContext)(d), C.uint(dp))) } -//void avfilter_link_free (AVFilterLink **link) +//void avfilter_link_free (AvFilterLink **link) //Free the link in *link, and set its pointer to NULL. -func Avfilter_link_free(l **AVFilterLink) { +func Avfilter_link_free(l **AvFilterLink) { C.avfilter_link_free((**C.struct_AVFilterLink)(unsafe.Pointer(l))) } -//int avfilter_link_get_channels (AVFilterLink *link) +//int avfilter_link_get_channels (AvFilterLink *link) //Get the number of channels of a link. -func Avfilter_link_get_channels(l *AVFilterLink) int { +func Avfilter_link_get_channels(l *AvFilterLink) int { return int(C.avfilter_link_get_channels((*C.struct_AVFilterLink)(l))) } -//void avfilter_link_set_closed (AVFilterLink *link, int closed) +//void avfilter_link_set_closed (AvFilterLink *link, int closed) //Set the closed field of a link. -func Avfilter_link_set_closed(l *AVFilterLink, c int) { +func Avfilter_link_set_closed(l *AvFilterLink, c int) { C.avfilter_link_set_closed((*C.struct_AVFilterLink)(l), C.int(c)) } -//int avfilter_config_links (AVFilterContext *filter) +//int avfilter_config_links (AvFilterContext *filter) //Negotiate the media format, dimensions, etc of all inputs to a filter. -func Avfilter_config_links(f *AVFilterContext) int { +func Avfilter_config_links(f *AvFilterContext) int { return int(C.avfilter_config_links((*C.struct_AVFilterContext)(f))) } -//int avfilter_process_command (AVFilterContext *filter, const char *cmd, const char *arg, char *res, int res_len, int flags) +//int avfilter_process_command (AvFilterContext *filter, const char *cmd, const char *arg, char *res, int res_len, int flags) //Make the filter instance process a command. -func Avfilter_process_command(f *AVFilterContext, cmd, arg, res string, l, fl int) int { +func Avfilter_process_command(f *AvFilterContext, cmd, arg, res string, l, fl int) int { return int(C.avfilter_process_command((*C.struct_AVFilterContext)(f), C.CString(cmd), C.CString(arg), C.CString(res), C.int(l), C.int(fl))) } @@ -109,146 +109,146 @@ func Avfilter_register_all() { C.avfilter_register_all() } -//int avfilter_register (AVFilter *filter) +//int avfilter_register (AvFilter *filter) //Register a filter. -func Avfilter_register(f *AVFilter) int { +func Avfilter_register(f *AvFilter) int { return int(C.avfilter_register((*C.struct_AVFilter)(f))) } -//const AVFilter * avfilter_get_by_name (const char *name) +//const AvFilter * avfilter_get_by_name (const char *name) //Get a filter definition matching the given name. -func Avfilter_get_by_name(n string) *AVFilter { - return (*AVFilter)(C.avfilter_get_by_name(C.CString(n))) +func Avfilter_get_by_name(n string) *AvFilter { + return (*AvFilter)(C.avfilter_get_by_name(C.CString(n))) } -//const AVFilter * avfilter_next (const AVFilter *prev) +//const AvFilter * avfilter_next (const AvFilter *prev) //Iterate over all registered filters. -func Avfilter_next(f *AVFilter) *AVFilter { - return (*AVFilter)(C.avfilter_next((*C.struct_AVFilter)(f))) +func Avfilter_next(f *AvFilter) *AvFilter { + return (*AvFilter)(C.avfilter_next((*C.struct_AVFilter)(f))) } -//int avfilter_init_str (AVFilterContext *ctx, const char *args) +//int avfilter_init_str (AvFilterContext *ctx, const char *args) //Initialize a filter with the supplied parameters. -func Avfilter_init_str(ctx *AVFilterContext, args string) int { +func Avfilter_init_str(ctx *AvFilterContext, args string) int { return int(C.avfilter_init_str((*C.struct_AVFilterContext)(ctx), C.CString(args))) } -//int avfilter_init_dict (AVFilterContext *ctx, AVDictionary **options) +//int avfilter_init_dict (AvFilterContext *ctx, AvDictionary **options) //Initialize a filter with the supplied dictionary of options. -func Avfilter_init_dict(f *AVFilterContext, o **AVDictionary) int { +func Avfilter_init_dict(f *AvFilterContext, o **AvDictionary) int { return int(C.avfilter_init_dict((*C.struct_AVFilterContext)(f), (**C.struct_AVDictionary)(unsafe.Pointer(o)))) } -//void avfilter_free (AVFilterContext *filter) +//void avfilter_free (AvFilterContext *filter) //Free a filter context. -func Avfilter_free(f *AVFilterContext) { +func Avfilter_free(f *AvFilterContext) { C.avfilter_free((*C.struct_AVFilterContext)(f)) } -//int avfilter_insert_filter (AVFilterLink *link, AVFilterContext *filt, unsigned filt_srcpad_idx, unsigned filt_dstpad_idx) +//int avfilter_insert_filter (AvFilterLink *link, AvFilterContext *filt, unsigned filt_srcpad_idx, unsigned filt_dstpad_idx) //Insert a filter in the middle of an existing link. -func Avfilter_insert_filter(l *AVFilterLink, f *AVFilterContext, fsi, fdi uint) int { +func Avfilter_insert_filter(l *AvFilterLink, f *AvFilterContext, fsi, fdi uint) int { return int(C.avfilter_insert_filter((*C.struct_AVFilterLink)(l), (*C.struct_AVFilterContext)(f), C.uint(fsi), C.uint(fdi))) } -//const AVClass * avfilter_get_class (void) +//const AvClass * avfilter_get_class (void) //avfilter_get_class -func Avfilter_get_class() *AVClass { - return (*AVClass)(C.avfilter_get_class()) +func Avfilter_get_class() *AvClass { + return (*AvClass)(C.avfilter_get_class()) } //Allocate a filter graph. -//AVFilterGraph * avfilter_graph_alloc (void) -func Avfilter_graph_alloc() *AVFilterGraph { - return (*AVFilterGraph)(C.avfilter_graph_alloc()) +//AvFilterGraph * avfilter_graph_alloc (void) +func Avfilter_graph_alloc() *AvFilterGraph { + return (*AvFilterGraph)(C.avfilter_graph_alloc()) } -//AVFilterContext * avfilter_graph_alloc_filter (AVFilterGraph *graph, const AVFilter *filter, const char *name) +//AvFilterContext * avfilter_graph_alloc_filter (AvFilterGraph *graph, const AvFilter *filter, const char *name) //Create a new filter instance in a filter graph. -func Avfilter_graph_alloc_filter(g *AVFilterGraph, f *AVFilter, n string) *AVFilterContext { - return (*AVFilterContext)(C.avfilter_graph_alloc_filter((*C.struct_AVFilterGraph)(g), (*C.struct_AVFilter)(f), C.CString(n))) +func Avfilter_graph_alloc_filter(g *AvFilterGraph, f *AvFilter, n string) *AvFilterContext { + return (*AvFilterContext)(C.avfilter_graph_alloc_filter((*C.struct_AVFilterGraph)(g), (*C.struct_AVFilter)(f), C.CString(n))) } -//AVFilterContext * avfilter_graph_get_filter (AVFilterGraph *graph, const char *name) +//AvFilterContext * avfilter_graph_get_filter (AvFilterGraph *graph, const char *name) //Get a filter instance identified by instance name from graph. -func Avfilter_graph_get_filter(g *AVFilterGraph, n string) *AVFilterContext { - return (*AVFilterContext)(C.avfilter_graph_get_filter((*C.struct_AVFilterGraph)(g), C.CString(n))) +func Avfilter_graph_get_filter(g *AvFilterGraph, n string) *AvFilterContext { + return (*AvFilterContext)(C.avfilter_graph_get_filter((*C.struct_AVFilterGraph)(g), C.CString(n))) } -//int avfilter_graph_create_filter (AVFilterContext **filt_ctx, const AVFilter *filt, const char *name, const char *args, void *opaque, AVFilterGraph *graph_ctx) +//int avfilter_graph_create_filter (AvFilterContext **filt_ctx, const AvFilter *filt, const char *name, const char *args, void *opaque, AvFilterGraph *graph_ctx) //Create and add a filter instance into an existing graph. -func Avfilter_graph_create_filter(cx **AVFilterContext, f *AVFilter, n, a string, o int, g *AVFilterGraph) int { +func Avfilter_graph_create_filter(cx **AvFilterContext, f *AvFilter, n, a string, o int, g *AvFilterGraph) int { return int(C.avfilter_graph_create_filter((**C.struct_AVFilterContext)(unsafe.Pointer(cx)), (*C.struct_AVFilter)(f), C.CString(n), C.CString(a), unsafe.Pointer(&o), (*C.struct_AVFilterGraph)(g))) } -//void avfilter_graph_set_auto_convert (AVFilterGraph *graph, unsigned flags) +//void avfilter_graph_set_auto_convert (AvFilterGraph *graph, unsigned flags) //Enable or disable automatic format conversion inside the graph. -func Avfilter_graph_set_auto_convert(g *AVFilterGraph, f uint) { +func Avfilter_graph_set_auto_convert(g *AvFilterGraph, f uint) { C.avfilter_graph_set_auto_convert((*C.struct_AVFilterGraph)(g), C.uint(f)) } -//int avfilter_graph_config (AVFilterGraph *graphctx, void *log_ctx) +//int avfilter_graph_config (AvFilterGraph *graphctx, void *log_ctx) //Check validity and configure all the links and formats in the graph. -func Avfilter_graph_config(g *AVFilterGraph, l int) int { +func Avfilter_graph_config(g *AvFilterGraph, l int) int { return int(C.avfilter_graph_config((*C.struct_AVFilterGraph)(g), unsafe.Pointer(&l))) } -//void avfilter_graph_free (AVFilterGraph **graph) +//void avfilter_graph_free (AvFilterGraph **graph) //Free a graph, destroy its links, and set *graph to NULL. -func Avfilter_graph_free(g **AVFilterGraph) { +func Avfilter_graph_free(g **AvFilterGraph) { C.avfilter_graph_free((**C.struct_AVFilterGraph)(unsafe.Pointer(g))) } -//AVFilterInOut * avfilter_inout_alloc (void) -//Allocate a single AVFilterInOut entry. -func Avfilter_inout_alloc() *AVFilterInOut { - return (*AVFilterInOut)(C.avfilter_inout_alloc()) +//AvFilterInOut * avfilter_inout_alloc (void) +//Allocate a single AvFilterInOut entry. +func Avfilter_inout_alloc() *AvFilterInOut { + return (*AvFilterInOut)(C.avfilter_inout_alloc()) } -//void avfilter_inout_free (AVFilterInOut **inout) -//Free the supplied list of AVFilterInOut and set *inout to NULL. -func Avfilter_inout_free(i **AVFilterInOut) { +//void avfilter_inout_free (AvFilterInOut **inout) +//Free the supplied list of AvFilterInOut and set *inout to NULL. +func Avfilter_inout_free(i **AvFilterInOut) { C.avfilter_inout_free((**C.struct_AVFilterInOut)(unsafe.Pointer(i))) } -//int avfilter_graph_parse (AVFilterGraph *graph, const char *filters, AVFilterInOut *inputs, AVFilterInOut *outputs, void *log_ctx) +//int avfilter_graph_parse (AvFilterGraph *graph, const char *filters, AvFilterInOut *inputs, AvFilterInOut *outputs, void *log_ctx) //Add a graph described by a string to a graph. -func Avfilter_graph_parse(g *AVFilterGraph, f string, i, o *AVFilterInOut, l int) int { +func Avfilter_graph_parse(g *AvFilterGraph, f string, i, o *AvFilterInOut, l int) int { return int(C.avfilter_graph_parse((*C.struct_AVFilterGraph)(g), C.CString(f), (*C.struct_AVFilterInOut)(i), (*C.struct_AVFilterInOut)(o), unsafe.Pointer(&l))) } -//int avfilter_graph_parse_ptr (AVFilterGraph *graph, const char *filters, AVFilterInOut **inputs, AVFilterInOut **outputs, void *log_ctx) +//int avfilter_graph_parse_ptr (AvFilterGraph *graph, const char *filters, AvFilterInOut **inputs, AvFilterInOut **outputs, void *log_ctx) //Add a graph described by a string to a graph. -func Avfilter_graph_parse_ptr(g *AVFilterGraph, f string, i, o **AVFilterInOut, l int) int { +func Avfilter_graph_parse_ptr(g *AvFilterGraph, f string, i, o **AvFilterInOut, l int) int { return int(C.avfilter_graph_parse_ptr((*C.struct_AVFilterGraph)(g), C.CString(f), (**C.struct_AVFilterInOut)(unsafe.Pointer(i)), (**C.struct_AVFilterInOut)(unsafe.Pointer(o)), unsafe.Pointer(&l))) } -//int avfilter_graph_parse2 (AVFilterGraph *graph, const char *filters, AVFilterInOut **inputs, AVFilterInOut **outputs) +//int avfilter_graph_parse2 (AvFilterGraph *graph, const char *filters, AvFilterInOut **inputs, AvFilterInOut **outputs) //Add a graph described by a string to a graph. -func Avfilter_graph_parse2(g *AVFilterGraph, f string, i, o **AVFilterInOut) int { +func Avfilter_graph_parse2(g *AvFilterGraph, f string, i, o **AvFilterInOut) int { return int(C.avfilter_graph_parse2((*C.struct_AVFilterGraph)(g), C.CString(f), (**C.struct_AVFilterInOut)(unsafe.Pointer(i)), (**C.struct_AVFilterInOut)(unsafe.Pointer(o)))) } -//int avfilter_graph_send_command (AVFilterGraph *graph, const char *target, const char *cmd, const char *arg, char *res, int res_len, int flags) +//int avfilter_graph_send_command (AvFilterGraph *graph, const char *target, const char *cmd, const char *arg, char *res, int res_len, int flags) //Send a command to one or more filter instances. -func Avfilter_graph_send_command(g *AVFilterGraph, t, cmd, arg, res string, resl, f int) int { +func Avfilter_graph_send_command(g *AvFilterGraph, t, cmd, arg, res string, resl, f int) int { return int(C.avfilter_graph_send_command((*C.struct_AVFilterGraph)(g), C.CString(t), C.CString(cmd), C.CString(arg), C.CString(res), C.int(resl), C.int(f))) } -//int avfilter_graph_queue_command (AVFilterGraph *graph, const char *target, const char *cmd, const char *arg, int flags, double ts) +//int avfilter_graph_queue_command (AvFilterGraph *graph, const char *target, const char *cmd, const char *arg, int flags, double ts) //Queue a command for one or more filter instances. -func Avfilter_graph_queue_command(g *AVFilterGraph, t, cmd, arg string, f int, ts C.double) int { +func Avfilter_graph_queue_command(g *AvFilterGraph, t, cmd, arg string, f int, ts C.double) int { return int(C.avfilter_graph_queue_command((*C.struct_AVFilterGraph)(g), C.CString(t), C.CString(cmd), C.CString(arg), C.int(f), ts)) } -//char * avfilter_graph_dump (AVFilterGraph *graph, const char *options) +//char * avfilter_graph_dump (AvFilterGraph *graph, const char *options) //Dump a graph into a human-readable string representation. -func Avfilter_graph_dump(g *AVFilterGraph, o string) string { +func Avfilter_graph_dump(g *AvFilterGraph, o string) string { return C.GoString(C.avfilter_graph_dump((*C.struct_AVFilterGraph)(g), C.CString(o))) } -//int avfilter_graph_request_oldest (AVFilterGraph *graph) +//int avfilter_graph_request_oldest (AvFilterGraph *graph) //Request a frame on the oldest sink -func Avfilter_graph_request_oldestlink(g *AVFilterGraph) int { +func Avfilter_graph_request_oldestlink(g *AvFilterGraph) int { return int(C.avfilter_graph_request_oldest((*C.struct_AVFilterGraph)(g))) } diff --git a/avformat/avformat.go b/avformat/avformat.go index ff995a6..154f4fe 100644 --- a/avformat/avformat.go +++ b/avformat/avformat.go @@ -28,171 +28,171 @@ import ( ) type ( - AVProbeData C.struct_AVProbeData - AVOutputFormat C.struct_AVOutputFormat - AVInputFormat C.struct_AVInputFormat - AVIndexEntry C.struct_AVIndexEntry - AVStream C.struct_AVStream - AVProgram C.struct_AVProgram - AVChapter C.struct_AVChapter - AVFormatContext C.struct_AVFormatContext - AVPacketList C.struct_AVPacketList - AVPacket C.struct_AVPacket - AVCodecParserContext C.struct_AVCodecParserContext - AVIOContext C.struct_AVIOContext - AVRational C.struct_AVRational - AVCodec C.struct_AVCodec - AVCodecTag C.struct_AVCodecTag - AVDictionary C.struct_AVDictionary - AVFrame C.struct_AVFrame - AVClass C.struct_AVClass - AVCodecContext C.struct_AVCodecContext - AVFormatInternal C.struct_AVFormatInternal - AVIOInterruptCB C.struct_AVIOInterruptCB - AVPacketSideData C.struct_AVPacketSideData + AvProbeData C.struct_AVProbeData + AvOutputFormat C.struct_AVOutputFormat + AvInputFormat C.struct_AVInputFormat + AvIndexEntry C.struct_AVIndexEntry + AvStream C.struct_AVStream + AvProgram C.struct_AVProgram + AvChapter C.struct_AVChapter + AvFormatContext C.struct_AVFormatContext + AvPacketList C.struct_AVPacketList + AvPacket C.struct_AVPacket + AvCodecParserContext C.struct_AVCodecParserContext + AvIOContext C.struct_AVIOContext + AvRational C.struct_AVRational + AvCodec C.struct_AVCodec + AvCodecTag C.struct_AVCodecTag + AvDictionary C.struct_AVDictionary + AvFrame C.struct_AVFrame + AvClass C.struct_AVClass + AvCodecContext C.struct_AVCodecContext + AvFormatInternal C.struct_AVFormatInternal + AvIOInterruptCB C.struct_AVIOInterruptCB + AvPacketSideData C.struct_AVPacketSideData FFFrac C.struct_FFFrac - AVStreamParseType C.enum_AVStreamParseType - AVDiscard C.enum_AVDiscard - AVMediaType C.enum_AVMediaType - AVDurationEstimationMethod C.enum_AVDurationEstimationMethod - AVPacketSideDataType C.enum_AVPacketSideDataType - AVCodecID C.enum_AVCodecID + AvStreamParseType C.enum_AVStreamParseType + AvDiscard C.enum_AVDiscard + AvMediaType C.enum_AVMediaType + AvDurationEstimationMethod C.enum_AVDurationEstimationMethod + AvPacketSideDataType C.enum_AVPacketSideDataType + AvCodecId C.enum_AVCodecID ) type File C.FILE -//int av_get_packet (AVIOContext *s, AVPacket *pkt, int size) +//int av_get_packet (AvIOContext *s, AvPacket *pkt, int size) //Allocate and read the payload of a packet and initialize its fields with default values. -func Av_get_packet(ctxt *AVIOContext, pkt *AVPacket, s int) int { +func Av_get_packet(ctxt *AvIOContext, pkt *AvPacket, s int) int { return int(C.av_get_packet((*C.struct_AVIOContext)(ctxt), (*C.struct_AVPacket)(pkt), C.int(s))) } -//int av_append_packet (AVIOContext *s, AVPacket *pkt, int size) -//Read data and append it to the current content of the AVPacket. -func Av_append_packet(ctxt *AVIOContext, pkt *AVPacket, s int) int { +//int av_append_packet (AvIOContext *s, AvPacket *pkt, int size) +//Read data and append it to the current content of the AvPacket. +func Av_append_packet(ctxt *AvIOContext, pkt *AvPacket, s int) int { return int(C.av_append_packet((*C.struct_AVIOContext)(ctxt), (*C.struct_AVPacket)(pkt), C.int(s))) } -//AVRational av_stream_get_r_frame_rate (const AVStream *s) -func Av_stream_get_r_frame_rate(s *AVStream) AVRational { - return (AVRational)(C.av_stream_get_r_frame_rate((*C.struct_AVStream)(s))) +//AvRational av_stream_get_r_frame_rate (const AvStream *s) +func Av_stream_get_r_frame_rate(s *AvStream) AvRational { + return (AvRational)(C.av_stream_get_r_frame_rate((*C.struct_AVStream)(s))) } -//void av_stream_set_r_frame_rate (AVStream *s, AVRational r) -func Av_stream_set_r_frame_rate(s *AVStream, r AVRational) { +//void av_stream_set_r_frame_rate (AvStream *s, AvRational r) +func Av_stream_set_r_frame_rate(s *AvStream, r AvRational) { C.av_stream_set_r_frame_rate((*C.struct_AVStream)(s), (C.struct_AVRational)(r)) } -//struct AVCodecParserContext * av_stream_get_parser (const AVStream *s) -func Av_stream_get_parser(s *AVStream) *AVCodecParserContext { - return (*AVCodecParserContext)(C.av_stream_get_parser((*C.struct_AVStream)(s))) +//struct AvCodecParserContext * av_stream_get_parser (const AvStream *s) +func Av_stream_get_parser(s *AvStream) *AvCodecParserContext { + return (*AvCodecParserContext)(C.av_stream_get_parser((*C.struct_AVStream)(s))) } -// //char * av_stream_get_recommended_encoder_configuration (const AVStream *s) -// func Av_stream_get_recommended_encoder_configuration(s *AVStream) string { +// //char * av_stream_get_recommended_encoder_configuration (const AvStream *s) +// func Av_stream_get_recommended_encoder_configuration(s *AvStream) string { // return C.GoString(C.av_stream_get_recommended_encoder_configuration((*C.struct_AVStream)(s))) // } -// //void av_stream_set_recommended_encoder_configuration (AVStream *s, char *configuration) -// func Av_stream_set_recommended_encoder_configuration(s *AVStream, c string) { +// //void av_stream_set_recommended_encoder_configuration (AvStream *s, char *configuration) +// func Av_stream_set_recommended_encoder_configuration(s *AvStream, c string) { // C.av_stream_set_recommended_encoder_configuration((*C.struct_AVStream)(s), C.CString(c)) // } -//int64_t av_stream_get_end_pts (const AVStream *st) +//int64_t av_stream_get_end_pts (const AvStream *st) //Returns the pts of the last muxed packet + its duration. -func Av_stream_get_end_pts(s *AVStream) int64 { +func Av_stream_get_end_pts(s *AvStream) int64 { return int64(C.av_stream_get_end_pts((*C.struct_AVStream)(s))) } -//int av_format_get_probe_score (const AVFormatContext *s) -func Av_format_get_probe_score(s *AVFormatContext) int { +//int av_format_get_probe_score (const AvFormatContext *s) +func Av_format_get_probe_score(s *AvFormatContext) int { return int(C.av_format_get_probe_score((*C.struct_AVFormatContext)(s))) } -//AVCodec * av_format_get_video_codec (const AVFormatContext *s) -func Av_format_get_video_codec(s *AVFormatContext) *AVCodec { - return (*AVCodec)(C.av_format_get_video_codec((*C.struct_AVFormatContext)(s))) +//AvCodec * av_format_get_video_codec (const AvFormatContext *s) +func Av_format_get_video_codec(s *AvFormatContext) *AvCodec { + return (*AvCodec)(C.av_format_get_video_codec((*C.struct_AVFormatContext)(s))) } -//void av_format_set_video_codec (AVFormatContext *s, AVCodec *c) -func Av_format_set_video_codec(s *AVFormatContext, c *AVCodec) { +//void av_format_set_video_codec (AvFormatContext *s, AvCodec *c) +func Av_format_set_video_codec(s *AvFormatContext, c *AvCodec) { C.av_format_set_video_codec((*C.struct_AVFormatContext)(s), (*C.struct_AVCodec)(c)) } -//AVCodec * av_format_get_audio_codec (const AVFormatContext *s) -func Av_format_get_audio_codec(s *AVFormatContext) *AVCodec { - return (*AVCodec)(C.av_format_get_audio_codec((*C.struct_AVFormatContext)(s))) +//AvCodec * av_format_get_audio_codec (const AvFormatContext *s) +func Av_format_get_audio_codec(s *AvFormatContext) *AvCodec { + return (*AvCodec)(C.av_format_get_audio_codec((*C.struct_AVFormatContext)(s))) } -//void av_format_set_audio_codec (AVFormatContext *s, AVCodec *c) -func Av_format_set_audio_codec(s *AVFormatContext, c *AVCodec) { +//void av_format_set_audio_codec (AvFormatContext *s, AvCodec *c) +func Av_format_set_audio_codec(s *AvFormatContext, c *AvCodec) { C.av_format_set_audio_codec((*C.struct_AVFormatContext)(s), (*C.struct_AVCodec)(c)) } -//AVCodec * av_format_get_subtitle_codec (const AVFormatContext *s) -func Av_format_get_subtitle_codec(s *AVFormatContext) *AVCodec { - return (*AVCodec)(C.av_format_get_subtitle_codec((*C.struct_AVFormatContext)(s))) +//AvCodec * av_format_get_subtitle_codec (const AvFormatContext *s) +func Av_format_get_subtitle_codec(s *AvFormatContext) *AvCodec { + return (*AvCodec)(C.av_format_get_subtitle_codec((*C.struct_AVFormatContext)(s))) } -//void av_format_set_subtitle_codec (AVFormatContext *s, AVCodec *c) -func Av_format_set_subtitle_codec(s *AVFormatContext, c *AVCodec) { +//void av_format_set_subtitle_codec (AvFormatContext *s, AvCodec *c) +func Av_format_set_subtitle_codec(s *AvFormatContext, c *AvCodec) { C.av_format_set_subtitle_codec((*C.struct_AVFormatContext)(s), (*C.struct_AVCodec)(c)) } -// //AVCodec * av_format_get_data_codec (const AVFormatContext *s) -// func Av_format_get_data_codec(s *AVFormatContext) *AVCodec { -// return (*AVCodec)(C.av_format_get_data_codec((*C.struct_AVFormatContext)(s))) +// //AvCodec * av_format_get_data_codec (const AvFormatContext *s) +// func Av_format_get_data_codec(s *AvFormatContext) *AvCodec { +// return (*AvCodec)(C.av_format_get_data_codec((*C.struct_AVFormatContext)(s))) // } -// //void av_format_set_data_codec (AVFormatContext *s, AVCodec *c) -// func Av_format_set_data_codec(s *AVFormatContext, c *AVCodec) { +// //void av_format_set_data_codec (AvFormatContext *s, AvCodec *c) +// func Av_format_set_data_codec(s *AvFormatContext, c *AvCodec) { // C.av_format_set_data_codec((*C.struct_AVFormatContext)(s), (*C.struct_AVCodec)(c)) // } -//int av_format_get_metadata_header_padding (const AVFormatContext *s) -func Av_format_get_metadata_header_padding(s *AVFormatContext) int { +//int av_format_get_metadata_header_padding (const AvFormatContext *s) +func Av_format_get_metadata_header_padding(s *AvFormatContext) int { return int(C.av_format_get_metadata_header_padding((*C.struct_AVFormatContext)(s))) } -//void av_format_set_metadata_header_padding (AVFormatContext *s, int c) -func Av_format_set_metadata_header_padding(s *AVFormatContext, c int) { +//void av_format_set_metadata_header_padding (AvFormatContext *s, int c) +func Av_format_set_metadata_header_padding(s *AvFormatContext, c int) { C.av_format_set_metadata_header_padding((*C.struct_AVFormatContext)(s), C.int(c)) } -//void * av_format_get_opaque (const AVFormatContext *s) -func Av_format_get_opaque(s *AVFormatContext) { +//void * av_format_get_opaque (const AvFormatContext *s) +func Av_format_get_opaque(s *AvFormatContext) { C.av_format_get_opaque((*C.struct_AVFormatContext)(s)) } -//void av_format_set_opaque (AVFormatContext *s, void *opaque) -func Av_format_set_opaque(s *AVFormatContext, o int) { +//void av_format_set_opaque (AvFormatContext *s, void *opaque) +func Av_format_set_opaque(s *AvFormatContext, o int) { C.av_format_set_opaque((*C.struct_AVFormatContext)(s), unsafe.Pointer(&o)) } -//av_format_control_message av_format_get_control_message_cb (const AVFormatContext *s) -func Av_format_control_message(s *AVFormatContext) C.av_format_control_message { +//av_format_control_message av_format_get_control_message_cb (const AvFormatContext *s) +func Av_format_control_message(s *AvFormatContext) C.av_format_control_message { return C.av_format_get_control_message_cb((*C.struct_AVFormatContext)(s)) } -//void av_format_set_control_message_cb (AVFormatContext *s, av_format_control_message callback) -func Av_format_set_control_message_cb(s *AVFormatContext, c C.av_format_control_message) { +//void av_format_set_control_message_cb (AvFormatContext *s, av_format_control_message callback) +func Av_format_set_control_message_cb(s *AvFormatContext, c C.av_format_control_message) { C.av_format_set_control_message_cb((*C.struct_AVFormatContext)(s), c) } -//void av_format_inject_global_side_data (AVFormatContext *s) +//void av_format_inject_global_side_data (AvFormatContext *s) //This function will cause global side data to be injected in the next packet of each stream as well as after any subsequent seek. -func Av_format_inject_global_side_data(s *AVFormatContext) { +func Av_format_inject_global_side_data(s *AvFormatContext) { C.av_format_inject_global_side_data((*C.struct_AVFormatContext)(s)) } -//enum AVDurationEstimationMethod av_fmt_ctx_get_duration_estimation_method (const AVFormatContext *ctx) +//enum AvDurationEstimationMethod av_fmt_ctx_get_duration_estimation_method (const AvFormatContext *ctx) //Returns the method used to set ctx->duration. -func Av_fmt_ctx_get_duration_estimation_method(ctx *AVFormatContext) AVDurationEstimationMethod { - return (AVDurationEstimationMethod)(C.av_fmt_ctx_get_duration_estimation_method((*C.struct_AVFormatContext)(ctx))) +func Av_fmt_ctx_get_duration_estimation_method(ctx *AvFormatContext) AvDurationEstimationMethod { + return (AvDurationEstimationMethod)(C.av_fmt_ctx_get_duration_estimation_method((*C.struct_AVFormatContext)(ctx))) } //unsigned avformat_version (void) -//Return the LIBAVFORMAT_VERSION_INT constant. +//Return the LIBAvFORMAT_VERSION_INT constant. func Avformat_version() uint { return uint(C.avformat_version()) } @@ -215,13 +215,13 @@ func Av_register_all() { C.av_register_all() } -//void av_register_input_format (AVInputFormat *format) -func Av_register_input_format(f *AVInputFormat) { +//void av_register_input_format (AvInputFormat *format) +func Av_register_input_format(f *AvInputFormat) { C.av_register_input_format((*C.struct_AVInputFormat)(f)) } -//void av_register_output_format (AVOutputFormat *format) -func Av_register_output_format(f *AVOutputFormat) { +//void av_register_output_format (AvOutputFormat *format) +func Av_register_output_format(f *AvOutputFormat) { C.av_register_output_format((*C.struct_AVOutputFormat)(f)) } @@ -237,218 +237,218 @@ func Avformat_network_deinit() int { return int(C.avformat_network_deinit()) } -//AVInputFormat * av_iformat_next (const AVInputFormat *f) +//AvInputFormat * av_iformat_next (const AvInputFormat *f) //If f is NULL, returns the first registered input format, if f is non-NULL, returns the next registered input format after f or NULL if f is the last one. -func Av_iformat_next(f *AVInputFormat) *AVInputFormat { - return (*AVInputFormat)(C.av_iformat_next((*C.struct_AVInputFormat)(f))) +func Av_iformat_next(f *AvInputFormat) *AvInputFormat { + return (*AvInputFormat)(C.av_iformat_next((*C.struct_AVInputFormat)(f))) } -//AVOutputFormat * av_oformat_next (const AVOutputFormat *f) +//AvOutputFormat * av_oformat_next (const AvOutputFormat *f) //If f is NULL, returns the first registered output format, if f is non-NULL, returns the next registered output format after f or NULL if f is the last one. -func Av_oformat_next(f *AVOutputFormat) *AVOutputFormat { - return (*AVOutputFormat)(C.av_oformat_next((*C.struct_AVOutputFormat)(f))) +func Av_oformat_next(f *AvOutputFormat) *AvOutputFormat { + return (*AvOutputFormat)(C.av_oformat_next((*C.struct_AVOutputFormat)(f))) } -//AVFormatContext * avformat_alloc_context (void) -//Allocate an AVFormatContext. -func Avformat_alloc_context() *AVFormatContext { - return (*AVFormatContext)(C.avformat_alloc_context()) +//AvFormatContext * avformat_alloc_context (void) +//Allocate an AvFormatContext. +func Avformat_alloc_context() *AvFormatContext { + return (*AvFormatContext)(C.avformat_alloc_context()) } -//void avformat_free_context (AVFormatContext *s) -//Free an AVFormatContext and all its streams. -func Avformat_free_context(s *AVFormatContext) { +//void avformat_free_context (AvFormatContext *s) +//Free an AvFormatContext and all its streams. +func Avformat_free_context(s *AvFormatContext) { C.avformat_free_context((*C.struct_AVFormatContext)(s)) } -//const AVClass * avformat_get_class (void) -//Get the AVClass for AVFormatContext. -func Avformat_get_class() *AVClass { - return (*AVClass)(C.avformat_get_class()) +//const AvClass * avformat_get_class (void) +//Get the AvClass for AvFormatContext. +func Avformat_get_class() *AvClass { + return (*AvClass)(C.avformat_get_class()) } -//AVStream * avformat_new_stream (AVFormatContext *s, const AVCodec *c) +//AvStream * avformat_new_stream (AvFormatContext *s, const AvCodec *c) //Add a new stream to a media file. -func Avformat_new_stream(s *AVFormatContext, c *AVCodec) *AVStream { - return (*AVStream)(C.avformat_new_stream((*C.struct_AVFormatContext)(s), (*C.struct_AVCodec)(c))) +func Avformat_new_stream(s *AvFormatContext, c *AvCodec) *AvStream { + return (*AvStream)(C.avformat_new_stream((*C.struct_AVFormatContext)(s), (*C.struct_AVCodec)(c))) } -//uint8_t * av_stream_get_side_data (AVStream *stream, enum AVPacketSideDataType type, int *size) +//uint8_t * av_stream_get_side_data (AvStream *stream, enum AvPacketSideDataType type, int *size) //Get side information from stream. -func Av_stream_get_side_data(s *AVStream, t AVPacketSideDataType, z int) *uint8 { +func Av_stream_get_side_data(s *AvStream, t AvPacketSideDataType, z int) *uint8 { return (*uint8)(C.av_stream_get_side_data((*C.struct_AVStream)(s), (C.enum_AVPacketSideDataType)(t), (*C.int)(unsafe.Pointer(&z)))) } -//AVProgram * av_new_program (AVFormatContext *s, int id) -func Av_new_program(s *AVFormatContext, id int) *AVProgram { - return (*AVProgram)(C.av_new_program((*C.struct_AVFormatContext)(s), C.int(id))) +//AvProgram * av_new_program (AvFormatContext *s, int id) +func Av_new_program(s *AvFormatContext, id int) *AvProgram { + return (*AvProgram)(C.av_new_program((*C.struct_AVFormatContext)(s), C.int(id))) } -//int avformat_alloc_output_context2 (AVFormatContext **ctx, AVOutputFormat *oformat, const char *format_name, const char *filename) -//Allocate an AVFormatContext for an output format. -func Avformat_alloc_output_context2(ctx **AVFormatContext, o *AVOutputFormat, fo, fi string) int { +//int avformat_alloc_output_context2 (AvFormatContext **ctx, AvOutputFormat *oformat, const char *format_name, const char *filename) +//Allocate an AvFormatContext for an output format. +func Avformat_alloc_output_context2(ctx **AvFormatContext, o *AvOutputFormat, fo, fi string) int { return int(C.avformat_alloc_output_context2((**C.struct_AVFormatContext)(unsafe.Pointer(ctx)), (*C.struct_AVOutputFormat)(o), C.CString(fo), C.CString(fi))) } -//AVInputFormat * av_find_input_format (const char *short_name) -//Find AVInputFormat based on the short name of the input format. -func Av_find_input_format(s string) *AVInputFormat { - return (*AVInputFormat)(C.av_find_input_format(C.CString(s))) +//AvInputFormat * av_find_input_format (const char *short_name) +//Find AvInputFormat based on the short name of the input format. +func Av_find_input_format(s string) *AvInputFormat { + return (*AvInputFormat)(C.av_find_input_format(C.CString(s))) } -//AVInputFormat * av_probe_input_format (AVProbeData *pd, int is_opened) +//AvInputFormat * av_probe_input_format (AvProbeData *pd, int is_opened) //Guess the file format. -func Av_probe_input_format(pd *AVProbeData, i int) *AVInputFormat { - return (*AVInputFormat)(C.av_probe_input_format((*C.struct_AVProbeData)(pd), C.int(i))) +func Av_probe_input_format(pd *AvProbeData, i int) *AvInputFormat { + return (*AvInputFormat)(C.av_probe_input_format((*C.struct_AVProbeData)(pd), C.int(i))) } -//AVInputFormat * av_probe_input_format2 (AVProbeData *pd, int is_opened, int *score_max) +//AvInputFormat * av_probe_input_format2 (AvProbeData *pd, int is_opened, int *score_max) //Guess the file format. -func Av_probe_input_format2(pd *AVProbeData, o int, sm *int) *AVInputFormat { - return (*AVInputFormat)(C.av_probe_input_format2((*C.struct_AVProbeData)(pd), C.int(o), (*C.int)(unsafe.Pointer(sm)))) +func Av_probe_input_format2(pd *AvProbeData, o int, sm *int) *AvInputFormat { + return (*AvInputFormat)(C.av_probe_input_format2((*C.struct_AVProbeData)(pd), C.int(o), (*C.int)(unsafe.Pointer(sm)))) } -//AVInputFormat * av_probe_input_format3 (AVProbeData *pd, int is_opened, int *score_ret) +//AvInputFormat * av_probe_input_format3 (AvProbeData *pd, int is_opened, int *score_ret) //Guess the file format. -func Av_probe_input_format3(pd *AVProbeData, o int, sl *int) *AVInputFormat { - return (*AVInputFormat)(C.av_probe_input_format3((*C.struct_AVProbeData)(pd), C.int(o), (*C.int)(unsafe.Pointer(sl)))) +func Av_probe_input_format3(pd *AvProbeData, o int, sl *int) *AvInputFormat { + return (*AvInputFormat)(C.av_probe_input_format3((*C.struct_AVProbeData)(pd), C.int(o), (*C.int)(unsafe.Pointer(sl)))) } -//int av_probe_input_buffer2 (AVIOContext *pb, AVInputFormat **fmt, const char *filename, void *logctx, unsigned int offset, unsigned int max_probe_size) +//int av_probe_input_buffer2 (AvIOContext *pb, AvInputFormat **fmt, const char *filename, void *logctx, unsigned int offset, unsigned int max_probe_size) //Probe a bytestream to determine the input format. -func Av_probe_input_buffer2(pb *AVIOContext, f **AVInputFormat, fi string, l int, o, m uint) int { +func Av_probe_input_buffer2(pb *AvIOContext, f **AvInputFormat, fi string, l int, o, m uint) int { return int(C.av_probe_input_buffer2((*C.struct_AVIOContext)(pb), (**C.struct_AVInputFormat)(unsafe.Pointer(f)), C.CString(fi), unsafe.Pointer(&l), C.uint(o), C.uint(m))) } -//int av_probe_input_buffer (AVIOContext *pb, AVInputFormat **fmt, const char *filename, void *logctx, unsigned int offset, unsigned int max_probe_size) +//int av_probe_input_buffer (AvIOContext *pb, AvInputFormat **fmt, const char *filename, void *logctx, unsigned int offset, unsigned int max_probe_size) //Like av_probe_input_buffer2() but returns 0 on success. -func Av_probe_input_buffer(pb *AVIOContext, f **AVInputFormat, fi string, l int, o, m uint) int { +func Av_probe_input_buffer(pb *AvIOContext, f **AvInputFormat, fi string, l int, o, m uint) int { return int(C.av_probe_input_buffer((*C.struct_AVIOContext)(pb), (**C.struct_AVInputFormat)(unsafe.Pointer(f)), C.CString(fi), unsafe.Pointer(&l), C.uint(o), C.uint(m))) } -//int avformat_open_input (AVFormatContext **ps, const char *filename, AVInputFormat *fmt, AVDictionary **options) +//int avformat_open_input (AvFormatContext **ps, const char *filename, AvInputFormat *fmt, AvDictionary **options) //Open an input stream and read the header. -func Avformat_open_input(ps **AVFormatContext, fi string, fmt *AVInputFormat, d **AVDictionary) int { +func Avformat_open_input(ps **AvFormatContext, fi string, fmt *AvInputFormat, d **AvDictionary) int { return int(C.avformat_open_input((**C.struct_AVFormatContext)(unsafe.Pointer(ps)), C.CString(fi), (*C.struct_AVInputFormat)(fmt), (**C.struct_AVDictionary)(unsafe.Pointer(d)))) } -//int avformat_find_stream_info (AVFormatContext *ic, AVDictionary **options) +//int avformat_find_stream_info (AvFormatContext *ic, AvDictionary **options) //Read packets of a media file to get stream information. -func Avformat_find_stream_info(ic *AVFormatContext, d **AVDictionary) int { +func Avformat_find_stream_info(ic *AvFormatContext, d **AvDictionary) int { return int(C.avformat_find_stream_info((*C.struct_AVFormatContext)(ic), (**C.struct_AVDictionary)(unsafe.Pointer(d)))) } -//AVProgram * av_find_program_from_stream (AVFormatContext *ic, AVProgram *last, int s) +//AvProgram * av_find_program_from_stream (AvFormatContext *ic, AvProgram *last, int s) //Find the programs which belong to a given stream. -func Av_find_program_from_stream(ic *AVFormatContext, l *AVProgram, s int) *AVProgram { - return (*AVProgram)(C.av_find_program_from_stream((*C.struct_AVFormatContext)(ic), (*C.struct_AVProgram)(l), C.int(s))) +func Av_find_program_from_stream(ic *AvFormatContext, l *AvProgram, s int) *AvProgram { + return (*AvProgram)(C.av_find_program_from_stream((*C.struct_AVFormatContext)(ic), (*C.struct_AVProgram)(l), C.int(s))) } -//int av_find_best_stream (AVFormatContext *ic, enum AVMediaType type, int wanted_stream_nb, int related_stream, AVCodec **decoder_ret, int flags) +//int av_find_best_stream (AvFormatContext *ic, enum AvMediaType type, int wanted_stream_nb, int related_stream, AvCodec **decoder_ret, int flags) //Find the "best" stream in the file. -func Av_find_best_stream(ic *AVFormatContext, t AVMediaType, ws, rs int, c **AVCodec, f int) int { +func Av_find_best_stream(ic *AvFormatContext, t AvMediaType, ws, rs int, c **AvCodec, f int) int { return int(C.av_find_best_stream((*C.struct_AVFormatContext)(ic), (C.enum_AVMediaType)(t), C.int(ws), C.int(rs), (**C.struct_AVCodec)(unsafe.Pointer(c)), C.int(f))) } -//int av_read_frame (AVFormatContext *s, AVPacket *pkt) +//int av_read_frame (AvFormatContext *s, AvPacket *pkt) //Return the next frame of a stream. -func Av_read_frame(s *AVFormatContext, pkt *avcodec.AVPacket) int { +func Av_read_frame(s *AvFormatContext, pkt *avcodec.AvPacket) int { return int(C.av_read_frame((*C.struct_AVFormatContext)(unsafe.Pointer(s)), (*C.struct_AVPacket)(unsafe.Pointer(pkt)))) } -//int av_seek_frame (AVFormatContext *s, int stream_index, int64_t timestamp, int flags) +//int av_seek_frame (AvFormatContext *s, int stream_index, int64_t timestamp, int flags) //Seek to the keyframe at timestamp. -func Av_seek_frame(s *AVFormatContext, st int, t int64, f int) int { +func Av_seek_frame(s *AvFormatContext, st int, t int64, f int) int { return int(C.av_seek_frame((*C.struct_AVFormatContext)(s), C.int(st), C.int64_t(t), C.int(f))) } -//int avformat_seek_file (AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags) +//int avformat_seek_file (AvFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags) //Seek to timestamp ts. -func Avformat_seek_file(s *AVFormatContext, si int, mit, ts, mat int64, f int) int { +func Avformat_seek_file(s *AvFormatContext, si int, mit, ts, mat int64, f int) int { return int(C.avformat_seek_file((*C.struct_AVFormatContext)(s), C.int(si), C.int64_t(mit), C.int64_t(ts), C.int64_t(mat), C.int(f))) } -// //int avformat_flush (AVFormatContext *s) +// //int avformat_flush (AvFormatContext *s) // //Discard all internally buffered data. -// func Avformat_flush(s *AVFormatContext) int { +// func Avformat_flush(s *AvFormatContext) int { // return int(C.avformat_flush((*C.struct_AVFormatContext)(s))) // } -//int av_read_play (AVFormatContext *s) +//int av_read_play (AvFormatContext *s) //Start playing a network-based stream (e.g. -func Av_read_play(s *AVFormatContext) int { +func Av_read_play(s *AvFormatContext) int { return int(C.av_read_play((*C.struct_AVFormatContext)(s))) } -//int av_read_pause (AVFormatContext *s) +//int av_read_pause (AvFormatContext *s) //Pause a network-based stream (e.g. -func Av_read_pause(s *AVFormatContext) int { +func Av_read_pause(s *AvFormatContext) int { return int(C.av_read_pause((*C.struct_AVFormatContext)(s))) } -//void avformat_close_input (AVFormatContext **s) -//Close an opened input AVFormatContext. -func Avformat_close_input(s *AVFormatContext) { +//void avformat_close_input (AvFormatContext **s) +//Close an opened input AvFormatContext. +func Avformat_close_input(s *AvFormatContext) { C.avformat_close_input((**C.struct_AVFormatContext)(unsafe.Pointer(s))) } -//int avformat_write_header (AVFormatContext *s, AVDictionary **options) +//int avformat_write_header (AvFormatContext *s, AvDictionary **options) //Allocate the stream private data and write the stream header to an output media file. -func Avformat_write_header(s *AVFormatContext, o **AVDictionary) int { +func Avformat_write_header(s *AvFormatContext, o **AvDictionary) int { return int(C.avformat_write_header((*C.struct_AVFormatContext)(s), (**C.struct_AVDictionary)(unsafe.Pointer(o)))) } -//int av_write_frame (AVFormatContext *s, AVPacket *pkt) +//int av_write_frame (AvFormatContext *s, AvPacket *pkt) //Write a packet to an output media file. -func Av_write_frame(s *AVFormatContext, pkt *AVPacket) int { +func Av_write_frame(s *AvFormatContext, pkt *AvPacket) int { return int(C.av_write_frame((*C.struct_AVFormatContext)(s), (*C.struct_AVPacket)(pkt))) } -//int av_interleaved_write_frame (AVFormatContext *s, AVPacket *pkt) +//int av_interleaved_write_frame (AvFormatContext *s, AvPacket *pkt) //Write a packet to an output media file ensuring correct interleaving. -func Av_interleaved_write_frame(s *AVFormatContext, pkt *AVPacket) int { +func Av_interleaved_write_frame(s *AvFormatContext, pkt *AvPacket) int { return int(C.av_interleaved_write_frame((*C.struct_AVFormatContext)(s), (*C.struct_AVPacket)(pkt))) } -//int av_write_uncoded_frame (AVFormatContext *s, int stream_index, AVFrame *frame) +//int av_write_uncoded_frame (AvFormatContext *s, int stream_index, AvFrame *frame) //Write a uncoded frame to an output media file. -func Av_write_uncoded_frame(s *AVFormatContext, si int, f *AVFrame) int { +func Av_write_uncoded_frame(s *AvFormatContext, si int, f *AvFrame) int { return int(C.av_write_uncoded_frame((*C.struct_AVFormatContext)(s), C.int(si), (*C.struct_AVFrame)(f))) } -//int av_interleaved_write_uncoded_frame (AVFormatContext *s, int stream_index, AVFrame *frame) +//int av_interleaved_write_uncoded_frame (AvFormatContext *s, int stream_index, AvFrame *frame) //Write a uncoded frame to an output media file. -func Av_interleaved_write_uncoded_frame(s *AVFormatContext, si int, f *AVFrame) int { +func Av_interleaved_write_uncoded_frame(s *AvFormatContext, si int, f *AvFrame) int { return int(C.av_interleaved_write_uncoded_frame((*C.struct_AVFormatContext)(s), C.int(si), (*C.struct_AVFrame)(f))) } -//int av_write_uncoded_frame_query (AVFormatContext *s, int stream_index) +//int av_write_uncoded_frame_query (AvFormatContext *s, int stream_index) //Test whether a muxer supports uncoded frame. -func Av_write_uncoded_frame_query(s *AVFormatContext, si int) int { +func Av_write_uncoded_frame_query(s *AvFormatContext, si int) int { return int(C.av_write_uncoded_frame_query((*C.struct_AVFormatContext)(s), C.int(si))) } -//int av_write_trailer (AVFormatContext *s) +//int av_write_trailer (AvFormatContext *s) //Write the stream trailer to an output media file and free the file private data. -func Av_write_trailer(s *AVFormatContext) int { +func Av_write_trailer(s *AvFormatContext) int { return int(C.av_write_trailer((*C.struct_AVFormatContext)(s))) } -//AVOutputFormat * av_guess_format (const char *short_name, const char *filename, const char *mime_type) +//AvOutputFormat * av_guess_format (const char *short_name, const char *filename, const char *mime_type) //Return the output format in the list of registered output formats which best matches the provided parameters, or return NULL if there is no match. -func Av_guess_format(sn, f, mt string) *AVOutputFormat { - return (*AVOutputFormat)(C.av_guess_format(C.CString(sn), C.CString(f), C.CString(mt))) +func Av_guess_format(sn, f, mt string) *AvOutputFormat { + return (*AvOutputFormat)(C.av_guess_format(C.CString(sn), C.CString(f), C.CString(mt))) } -//enum AVCodecID av_guess_codec (AVOutputFormat *fmt, const char *short_name, const char *filename, const char *mime_type, enum AVMediaType type) +//enum AvCodecId av_guess_codec (AvOutputFormat *fmt, const char *short_name, const char *filename, const char *mime_type, enum AvMediaType type) //Guess the codec ID based upon muxer and filename. -func Av_guess_codec(fmt *AVOutputFormat, sn, f, mt string, t AVMediaType) AVCodecID { - return (AVCodecID)(C.av_guess_codec((*C.struct_AVOutputFormat)(fmt), C.CString(sn), C.CString(f), C.CString(mt), (C.enum_AVMediaType)(t))) +func Av_guess_codec(fmt *AvOutputFormat, sn, f, mt string, t AvMediaType) AvCodecId { + return (AvCodecId)(C.av_guess_codec((*C.struct_AVOutputFormat)(fmt), C.CString(sn), C.CString(f), C.CString(mt), (C.enum_AVMediaType)(t))) } -//int av_get_output_timestamp (struct AVFormatContext *s, int stream, int64_t *dts, int64_t *wall) +//int av_get_output_timestamp (struct AvFormatContext *s, int stream, int64_t *dts, int64_t *wall) //Get timing information for the data currently output. -func Av_get_output_timestamp(s *AVFormatContext, st int, dts, wall *C.int64_t) int { +func Av_get_output_timestamp(s *AvFormatContext, st int, dts, wall *C.int64_t) int { return int(C.av_get_output_timestamp((*C.struct_AVFormatContext)(s), C.int(st), dts, wall)) } @@ -464,50 +464,50 @@ func Av_hex_dump_log(a, l int, b *uint8, s int) { C.av_hex_dump_log(unsafe.Pointer(&a), C.int(l), (*C.uint8_t)(b), C.int(s)) } -//void av_pkt_dump2 (FILE *f, const AVPacket *pkt, int dump_payload, const AVStream *st) +//void av_pkt_dump2 (FILE *f, const AvPacket *pkt, int dump_payload, const AvStream *st) //Send a nice dump of a packet to the specified file stream. -func Av_pkt_dump2(f *File, pkt *AVPacket, dp int, st *AVStream) { +func Av_pkt_dump2(f *File, pkt *AvPacket, dp int, st *AvStream) { C.av_pkt_dump2((*C.FILE)(f), (*C.struct_AVPacket)(pkt), C.int(dp), (*C.struct_AVStream)(st)) } -//void av_pkt_dump_log2 (void *avcl, int level, const AVPacket *pkt, int dump_payload, const AVStream *st) +//void av_pkt_dump_log2 (void *avcl, int level, const AvPacket *pkt, int dump_payload, const AvStream *st) //Send a nice dump of a packet to the log. -func Av_pkt_dump_log2(a int, l int, pkt *AVPacket, dp int, st *AVStream) { +func Av_pkt_dump_log2(a int, l int, pkt *AvPacket, dp int, st *AvStream) { C.av_pkt_dump_log2(unsafe.Pointer(&a), C.int(l), (*C.struct_AVPacket)(pkt), C.int(dp), (*C.struct_AVStream)(st)) } -//enum AVCodecID av_codec_get_id (const struct AVCodecTag *const *tags, unsigned int tag) -//Get the AVCodecID for the given codec tag tag. -func Av_codec_get_id(t **AVCodecTag, tag uint) AVCodecID { - return (AVCodecID)(C.av_codec_get_id((**C.struct_AVCodecTag)(unsafe.Pointer(t)), C.uint(tag))) +//enum AvCodecId av_codec_get_id (const struct AvCodecTag *const *tags, unsigned int tag) +//Get the AvCodecId for the given codec tag tag. +func Av_codec_get_id(t **AvCodecTag, tag uint) AvCodecId { + return (AvCodecId)(C.av_codec_get_id((**C.struct_AVCodecTag)(unsafe.Pointer(t)), C.uint(tag))) } -//unsigned int av_codec_get_tag (const struct AVCodecTag *const *tags, enum AVCodecID id) +//unsigned int av_codec_get_tag (const struct AvCodecTag *const *tags, enum AvCodecId id) //Get the codec tag for the given codec id id. -func Av_codec_get_tag(t **AVCodecTag, id AVCodecID) uint { +func Av_codec_get_tag(t **AvCodecTag, id AvCodecId) uint { return uint(C.av_codec_get_tag((**C.struct_AVCodecTag)(unsafe.Pointer(t)), (C.enum_AVCodecID)(id))) } -//int av_codec_get_tag2 (const struct AVCodecTag *const *tags, enum AVCodecID id, unsigned int *tag) +//int av_codec_get_tag2 (const struct AvCodecTag *const *tags, enum AvCodecId id, unsigned int *tag) //Get the codec tag for the given codec id. -func Av_codec_get_tag2(t **AVCodecTag, id AVCodecID, tag *uint) int { +func Av_codec_get_tag2(t **AvCodecTag, id AvCodecId, tag *uint) int { return int(C.av_codec_get_tag2((**C.struct_AVCodecTag)(unsafe.Pointer(t)), (C.enum_AVCodecID)(id), (*C.uint)(unsafe.Pointer(tag)))) } -//int av_find_default_stream_index (AVFormatContext *s) -func Av_find_default_stream_index(s *AVFormatContext) int { +//int av_find_default_stream_index (AvFormatContext *s) +func Av_find_default_stream_index(s *AvFormatContext) int { return int(C.av_find_default_stream_index((*C.struct_AVFormatContext)(s))) } -//int av_index_search_timestamp (AVStream *st, int64_t timestamp, int flags) +//int av_index_search_timestamp (AvStream *st, int64_t timestamp, int flags) //Get the index for a specific timestamp. -func Av_index_search_timestamp(st *AVStream, t int64, f int) int { +func Av_index_search_timestamp(st *AvStream, t int64, f int) int { return int(C.av_index_search_timestamp((*C.struct_AVStream)(st), C.int64_t(t), C.int(f))) } -//int av_add_index_entry (AVStream *st, int64_t pos, int64_t timestamp, int size, int distance, int flags) +//int av_add_index_entry (AvStream *st, int64_t pos, int64_t timestamp, int size, int distance, int flags) //Add an index entry into a sorted list. -func Av_add_index_entry(st *AVStream, pos, t, int64, s, d, f int) int { +func Av_add_index_entry(st *AvStream, pos, t, int64, s, d, f int) int { return int(C.av_add_index_entry((*C.struct_AVStream)(st), C.int64_t(pos), C.int64_t(t), C.int(s), C.int(d), C.int(f))) } @@ -517,9 +517,9 @@ func Av_url_split(p string, ps int, a string, as int, h string, hs int, pp *int, C.av_url_split(C.CString(p), C.int(ps), C.CString(a), C.int(as), C.CString(h), C.int(hs), (*C.int)(unsafe.Pointer(pp)), C.CString(path), C.int(psize), C.CString(url)) } -//void av_dump_format (AVFormatContext *ic, int index, const char *url, int is_output) +//void av_dump_format (AvFormatContext *ic, int index, const char *url, int is_output) //Print detailed information about the input or output format, such as duration, bitrate, streams, container, programs, metadata, side data, codec and time base. -func Av_dump_format(ic *AVFormatContext, i int, url string, io int) { +func Av_dump_format(ic *AvFormatContext, i int, url string, io int) { C.av_dump_format((*C.struct_AVFormatContext)(unsafe.Pointer(ic)), C.int(i), C.CString(url), C.int(io)) } @@ -535,9 +535,9 @@ func Av_filename_number_test(f string) int { return int(C.av_filename_number_test(C.CString(f))) } -//int av_sdp_create (AVFormatContext *ac[], int n_files, char *buf, int size) +//int av_sdp_create (AvFormatContext *ac[], int n_files, char *buf, int size) //Generate an SDP for an RTP session. -func Av_sdp_create(ac **AVFormatContext, nf int, b string, s int) int { +func Av_sdp_create(ac **AvFormatContext, nf int, b string, s int) int { return int(C.av_sdp_create((**C.struct_AVFormatContext)(unsafe.Pointer(ac)), C.int(nf), C.CString(b), C.int(s))) } @@ -547,51 +547,51 @@ func Av_match_ext(f, e string) int { return int(C.av_match_ext(C.CString(f), C.CString(e))) } -//int avformat_query_codec (const AVOutputFormat *ofmt, enum AVCodecID codec_id, int std_compliance) +//int avformat_query_codec (const AvOutputFormat *ofmt, enum AvCodecId codec_id, int std_compliance) //Test if the given container can store a codec. -func Avformat_query_codec(o *AVOutputFormat, cd AVCodecID, sc int) int { +func Avformat_query_codec(o *AvOutputFormat, cd AvCodecId, sc int) int { return int(C.avformat_query_codec((*C.struct_AVOutputFormat)(o), (C.enum_AVCodecID)(cd), C.int(sc))) } -//struct AVCodecTag * avformat_get_riff_video_tags (void) -func Avformat_get_riff_video_tags() *AVCodecTag { - return (*AVCodecTag)(C.avformat_get_riff_video_tags()) +//struct AvCodecTag * avformat_get_riff_video_tags (void) +func Avformat_get_riff_video_tags() *AvCodecTag { + return (*AvCodecTag)(C.avformat_get_riff_video_tags()) } -//struct AVCodecTag * avformat_get_riff_audio_tags (void) -func Avformat_get_riff_audio_tags() *AVCodecTag { - return (*AVCodecTag)(C.avformat_get_riff_audio_tags()) +//struct AvCodecTag * avformat_get_riff_audio_tags (void) +func Avformat_get_riff_audio_tags() *AvCodecTag { + return (*AvCodecTag)(C.avformat_get_riff_audio_tags()) } -//struct AVCodecTag * avformat_get_mov_video_tags (void) -func Avformat_get_mov_video_tags() *AVCodecTag { - return (*AVCodecTag)(C.avformat_get_mov_video_tags()) +//struct AvCodecTag * avformat_get_mov_video_tags (void) +func Avformat_get_mov_video_tags() *AvCodecTag { + return (*AvCodecTag)(C.avformat_get_mov_video_tags()) } -//struct AVCodecTag * avformat_get_mov_audio_tags (void) -func Avformat_get_mov_audio_tags() *AVCodecTag { - return (*AVCodecTag)(C.avformat_get_mov_audio_tags()) +//struct AvCodecTag * avformat_get_mov_audio_tags (void) +func Avformat_get_mov_audio_tags() *AvCodecTag { + return (*AvCodecTag)(C.avformat_get_mov_audio_tags()) } -//AVRational av_guess_sample_aspect_ratio (AVFormatContext *format, AVStream *stream, AVFrame *frame) +//AvRational av_guess_sample_aspect_ratio (AvFormatContext *format, AvStream *stream, AvFrame *frame) //Guess the sample aspect ratio of a frame, based on both the stream and the frame aspect ratio. -func Av_guess_sample_aspect_ratio(f *AVFormatContext, st *AVStream, fr *AVFrame) AVRational { - return (AVRational)(C.av_guess_sample_aspect_ratio((*C.struct_AVFormatContext)(f), (*C.struct_AVStream)(st), (*C.struct_AVFrame)(fr))) +func Av_guess_sample_aspect_ratio(f *AvFormatContext, st *AvStream, fr *AvFrame) AvRational { + return (AvRational)(C.av_guess_sample_aspect_ratio((*C.struct_AVFormatContext)(f), (*C.struct_AVStream)(st), (*C.struct_AVFrame)(fr))) } -//AVRational av_guess_frame_rate (AVFormatContext *ctx, AVStream *stream, AVFrame *frame) +//AvRational av_guess_frame_rate (AvFormatContext *ctx, AvStream *stream, AvFrame *frame) //Guess the frame rate, based on both the container and codec information. -func Av_guess_frame_rate(ctx *AVFormatContext, st *AVStream, fr *AVFrame) AVRational { - return (AVRational)(C.av_guess_frame_rate((*C.struct_AVFormatContext)(ctx), (*C.struct_AVStream)(st), (*C.struct_AVFrame)(fr))) +func Av_guess_frame_rate(ctx *AvFormatContext, st *AvStream, fr *AvFrame) AvRational { + return (AvRational)(C.av_guess_frame_rate((*C.struct_AVFormatContext)(ctx), (*C.struct_AVStream)(st), (*C.struct_AVFrame)(fr))) } -//int avformat_match_stream_specifier (AVFormatContext *s, AVStream *st, const char *spec) +//int avformat_match_stream_specifier (AvFormatContext *s, AvStream *st, const char *spec) //Check if the stream st contained in s is matched by the stream specifier spec. -func Avformat_match_stream_specifier(s *AVFormatContext, st *AVStream, spec string) int { +func Avformat_match_stream_specifier(s *AvFormatContext, st *AvStream, spec string) int { return int(C.avformat_match_stream_specifier((*C.struct_AVFormatContext)(s), (*C.struct_AVStream)(st), C.CString(spec))) } -//int avformat_queue_attached_pictures (AVFormatContext *s) -func Avformat_queue_attached_pictures(s *AVFormatContext) int { +//int avformat_queue_attached_pictures (AvFormatContext *s) +func Avformat_queue_attached_pictures(s *AvFormatContext) int { return int(C.avformat_queue_attached_pictures((*C.struct_AVFormatContext)(s))) } diff --git a/avformat/context.go b/avformat/context.go index ae99471..e45d203 100644 --- a/avformat/context.go +++ b/avformat/context.go @@ -12,284 +12,284 @@ import ( ) // cctx := (*C.struct_AVFormatContext)(ctx) -// return (*AVStream)(unsafe.Pointer(cctx.streams)) +// return (*AvStream)(unsafe.Pointer(cctx.streams)) -func (ctxt *AVFormatContext) Chapters() **AVChapter { - return (**AVChapter)(unsafe.Pointer(ctxt.chapters)) +func (ctxt *AvFormatContext) Chapters() **AvChapter { + return (**AvChapter)(unsafe.Pointer(ctxt.chapters)) } -func (ctxt *AVFormatContext) Audio_codec() *AVCodec { - return (*AVCodec)(unsafe.Pointer(ctxt.audio_codec)) +func (ctxt *AvFormatContext) Audio_codec() *AvCodec { + return (*AvCodec)(unsafe.Pointer(ctxt.audio_codec)) } -func (ctxt *AVFormatContext) Subtitle_codec() *AVCodec { - return (*AVCodec)(unsafe.Pointer(ctxt.subtitle_codec)) +func (ctxt *AvFormatContext) Subtitle_codec() *AvCodec { + return (*AvCodec)(unsafe.Pointer(ctxt.subtitle_codec)) } -func (ctxt *AVFormatContext) Video_codec() *AVCodec { - return (*AVCodec)(unsafe.Pointer(ctxt.video_codec)) +func (ctxt *AvFormatContext) Video_codec() *AvCodec { + return (*AvCodec)(unsafe.Pointer(ctxt.video_codec)) } -func (ctxt *AVFormatContext) Metadata() *AVDictionary { - return (*AVDictionary)(unsafe.Pointer(ctxt.metadata)) +func (ctxt *AvFormatContext) Metadata() *AvDictionary { + return (*AvDictionary)(unsafe.Pointer(ctxt.metadata)) } -func (ctxt *AVFormatContext) Internal() *AVFormatInternal { - return (*AVFormatInternal)(unsafe.Pointer(ctxt.internal)) +func (ctxt *AvFormatContext) Internal() *AvFormatInternal { + return (*AvFormatInternal)(unsafe.Pointer(ctxt.internal)) } -func (ctxt *AVFormatContext) Pb() *AVIOContext { - return (*AVIOContext)(unsafe.Pointer(ctxt.pb)) +func (ctxt *AvFormatContext) Pb() *AvIOContext { + return (*AvIOContext)(unsafe.Pointer(ctxt.pb)) } -func (ctxt *AVFormatContext) Interrupt_callback() AVIOInterruptCB { - return AVIOInterruptCB(ctxt.interrupt_callback) +func (ctxt *AvFormatContext) Interrupt_callback() AvIOInterruptCB { + return AvIOInterruptCB(ctxt.interrupt_callback) } -func (ctxt *AVFormatContext) Programs() **AVProgram { - return (**AVProgram)(unsafe.Pointer(ctxt.programs)) +func (ctxt *AvFormatContext) Programs() **AvProgram { + return (**AvProgram)(unsafe.Pointer(ctxt.programs)) } -func (ctxt *AVFormatContext) Offset_timebase() AVRational { - return AVRational(ctxt.offset_timebase) +func (ctxt *AvFormatContext) Offset_timebase() AvRational { + return AvRational(ctxt.offset_timebase) } -func (ctxt *AVFormatContext) Streams() *AVStream { - return (*AVStream)(unsafe.Pointer(ctxt.streams)) +func (ctxt *AvFormatContext) Streams() *AvStream { + return (*AvStream)(unsafe.Pointer(ctxt.streams)) } -func (ctxt *AVFormatContext) Filename() string { +func (ctxt *AvFormatContext) Filename() string { return C.GoString((*C.char)(unsafe.Pointer(&ctxt.filename[0]))) } -// func (ctxt *AVFormatContext) Codec_whitelist() string { +// func (ctxt *AvFormatContext) Codec_whitelist() string { // return C.GoString(ctxt.codec_whitelist) // } -// func (ctxt *AVFormatContext) Format_whitelist() string { +// func (ctxt *AvFormatContext) Format_whitelist() string { // return C.GoString(ctxt.format_whitelist) // } -func (ctxt *AVFormatContext) Audio_codec_id() AVCodecID { - return AVCodecID(ctxt.audio_codec_id) +func (ctxt *AvFormatContext) Audio_codec_id() AvCodecId { + return AvCodecId(ctxt.audio_codec_id) } -func (ctxt *AVFormatContext) Subtitle_codec_id() AVCodecID { - return AVCodecID(ctxt.subtitle_codec_id) +func (ctxt *AvFormatContext) Subtitle_codec_id() AvCodecId { + return AvCodecId(ctxt.subtitle_codec_id) } -func (ctxt *AVFormatContext) Video_codec_id() AVCodecID { - return AVCodecID(ctxt.video_codec_id) +func (ctxt *AvFormatContext) Video_codec_id() AvCodecId { + return AvCodecId(ctxt.video_codec_id) } -func (ctxt *AVFormatContext) Duration_estimation_method() AVDurationEstimationMethod { - return AVDurationEstimationMethod(ctxt.duration_estimation_method) +func (ctxt *AvFormatContext) Duration_estimation_method() AvDurationEstimationMethod { + return AvDurationEstimationMethod(ctxt.duration_estimation_method) } -func (ctxt *AVFormatContext) Audio_preload() int { +func (ctxt *AvFormatContext) Audio_preload() int { return int(ctxt.audio_preload) } -func (ctxt *AVFormatContext) Avio_flags() int { +func (ctxt *AvFormatContext) Avio_flags() int { return int(ctxt.avio_flags) } -func (ctxt *AVFormatContext) Avoid_negative_ts() int { +func (ctxt *AvFormatContext) Avoid_negative_ts() int { return int(ctxt.avoid_negative_ts) } -func (ctxt *AVFormatContext) Bit_rate() int { +func (ctxt *AvFormatContext) Bit_rate() int { return int(ctxt.bit_rate) } -func (ctxt *AVFormatContext) Ctx_flags() int { +func (ctxt *AvFormatContext) Ctx_flags() int { return int(ctxt.ctx_flags) } -func (ctxt *AVFormatContext) Debug() int { +func (ctxt *AvFormatContext) Debug() int { return int(ctxt.debug) } -func (ctxt *AVFormatContext) Error_recognition() int { +func (ctxt *AvFormatContext) Error_recognition() int { return int(ctxt.error_recognition) } -func (ctxt *AVFormatContext) Event_flags() int { +func (ctxt *AvFormatContext) Event_flags() int { return int(ctxt.event_flags) } -func (ctxt *AVFormatContext) Flags() int { +func (ctxt *AvFormatContext) Flags() int { return int(ctxt.flags) } -func (ctxt *AVFormatContext) Flush_packets() int { +func (ctxt *AvFormatContext) Flush_packets() int { return int(ctxt.flush_packets) } -func (ctxt *AVFormatContext) Format_probesize() int { +func (ctxt *AvFormatContext) Format_probesize() int { return int(ctxt.format_probesize) } -func (ctxt *AVFormatContext) Fps_probe_size() int { +func (ctxt *AvFormatContext) Fps_probe_size() int { return int(ctxt.fps_probe_size) } -func (ctxt *AVFormatContext) Io_repositioned() int { +func (ctxt *AvFormatContext) Io_repositioned() int { return int(ctxt.io_repositioned) } -func (ctxt *AVFormatContext) Keylen() int { +func (ctxt *AvFormatContext) Keylen() int { return int(ctxt.keylen) } -func (ctxt *AVFormatContext) Max_chunk_duration() int { +func (ctxt *AvFormatContext) Max_chunk_duration() int { return int(ctxt.max_chunk_duration) } -func (ctxt *AVFormatContext) Max_chunk_size() int { +func (ctxt *AvFormatContext) Max_chunk_size() int { return int(ctxt.max_chunk_size) } -func (ctxt *AVFormatContext) Max_delay() int { +func (ctxt *AvFormatContext) Max_delay() int { return int(ctxt.max_delay) } -func (ctxt *AVFormatContext) Max_ts_probe() int { +func (ctxt *AvFormatContext) Max_ts_probe() int { return int(ctxt.max_ts_probe) } -func (ctxt *AVFormatContext) Metadata_header_padding() int { +func (ctxt *AvFormatContext) Metadata_header_padding() int { return int(ctxt.metadata_header_padding) } -func (ctxt *AVFormatContext) Probe_score() int { +func (ctxt *AvFormatContext) Probe_score() int { return int(ctxt.probe_score) } -func (ctxt *AVFormatContext) Raw_packet_buffer_remaining_size() int { +func (ctxt *AvFormatContext) Raw_packet_buffer_remaining_size() int { return int(ctxt.raw_packet_buffer_remaining_size) } -func (ctxt *AVFormatContext) Seek2any() int { +func (ctxt *AvFormatContext) Seek2any() int { return int(ctxt.seek2any) } -func (ctxt *AVFormatContext) Strict_std_compliance() int { +func (ctxt *AvFormatContext) Strict_std_compliance() int { return int(ctxt.strict_std_compliance) } -func (ctxt *AVFormatContext) Ts_id() int { +func (ctxt *AvFormatContext) Ts_id() int { return int(ctxt.ts_id) } -func (ctxt *AVFormatContext) Use_wallclock_as_timestamps() int { +func (ctxt *AvFormatContext) Use_wallclock_as_timestamps() int { return int(ctxt.use_wallclock_as_timestamps) } -func (ctxt *AVFormatContext) Data_offset() int64 { +func (ctxt *AvFormatContext) Data_offset() int64 { return int64(ctxt.data_offset) } -func (ctxt *AVFormatContext) Duration() int64 { +func (ctxt *AvFormatContext) Duration() int64 { return int64(ctxt.duration) } -func (ctxt *AVFormatContext) Max_analyze_duration2() int64 { +func (ctxt *AvFormatContext) Max_analyze_duration2() int64 { return int64(ctxt.max_analyze_duration2) } -func (ctxt *AVFormatContext) Max_interleave_delta() int64 { +func (ctxt *AvFormatContext) Max_interleave_delta() int64 { return int64(ctxt.max_interleave_delta) } -func (ctxt *AVFormatContext) Offset() int64 { +func (ctxt *AvFormatContext) Offset() int64 { return int64(ctxt.offset) } -func (ctxt *AVFormatContext) Output_ts_offset() int64 { +func (ctxt *AvFormatContext) Output_ts_offset() int64 { return int64(ctxt.output_ts_offset) } -func (ctxt *AVFormatContext) Probesize2() int64 { +func (ctxt *AvFormatContext) Probesize2() int64 { return int64(ctxt.probesize2) } -func (ctxt *AVFormatContext) Skip_initial_bytes() int64 { +func (ctxt *AvFormatContext) Skip_initial_bytes() int64 { return int64(ctxt.skip_initial_bytes) } -func (ctxt *AVFormatContext) Start_time() int64 { +func (ctxt *AvFormatContext) Start_time() int64 { return int64(ctxt.start_time) } -func (ctxt *AVFormatContext) Start_time_realtime() int64 { +func (ctxt *AvFormatContext) Start_time_realtime() int64 { return int64(ctxt.start_time_realtime) } -func (ctxt *AVFormatContext) Iformat() *AVInputFormat { - return (*AVInputFormat)(unsafe.Pointer(ctxt.iformat)) +func (ctxt *AvFormatContext) Iformat() *AvInputFormat { + return (*AvInputFormat)(unsafe.Pointer(ctxt.iformat)) } -func (ctxt *AVFormatContext) Oformat() *AVOutputFormat { - return (*AVOutputFormat)(unsafe.Pointer(ctxt.oformat)) +func (ctxt *AvFormatContext) Oformat() *AvOutputFormat { + return (*AvOutputFormat)(unsafe.Pointer(ctxt.oformat)) } -func (ctxt *AVFormatContext) Packet_buffer() *AVPacketList { - return (*AVPacketList)(unsafe.Pointer(ctxt.packet_buffer)) +func (ctxt *AvFormatContext) Packet_buffer() *AvPacketList { + return (*AvPacketList)(unsafe.Pointer(ctxt.packet_buffer)) } -func (ctxt *AVFormatContext) Packet_buffer_end() *AVPacketList { - return (*AVPacketList)(unsafe.Pointer(ctxt.packet_buffer_end)) +func (ctxt *AvFormatContext) Packet_buffer_end() *AvPacketList { + return (*AvPacketList)(unsafe.Pointer(ctxt.packet_buffer_end)) } -func (ctxt *AVFormatContext) Parse_queue() *AVPacketList { - return (*AVPacketList)(unsafe.Pointer(ctxt.parse_queue)) +func (ctxt *AvFormatContext) Parse_queue() *AvPacketList { + return (*AvPacketList)(unsafe.Pointer(ctxt.parse_queue)) } -func (ctxt *AVFormatContext) Parse_queue_end() *AVPacketList { - return (*AVPacketList)(unsafe.Pointer(ctxt.parse_queue_end)) +func (ctxt *AvFormatContext) Parse_queue_end() *AvPacketList { + return (*AvPacketList)(unsafe.Pointer(ctxt.parse_queue_end)) } -func (ctxt *AVFormatContext) Raw_packet_buffer() *AVPacketList { - return (*AVPacketList)(unsafe.Pointer(ctxt.raw_packet_buffer)) +func (ctxt *AvFormatContext) Raw_packet_buffer() *AvPacketList { + return (*AvPacketList)(unsafe.Pointer(ctxt.raw_packet_buffer)) } -func (ctxt *AVFormatContext) Raw_packet_buffer_end() *AVPacketList { - return (*AVPacketList)(unsafe.Pointer(ctxt.raw_packet_buffer_end)) +func (ctxt *AvFormatContext) Raw_packet_buffer_end() *AvPacketList { + return (*AvPacketList)(unsafe.Pointer(ctxt.raw_packet_buffer_end)) } -// func (ctxt *AVFormatContext) Dump_separator() uint8 { +// func (ctxt *AvFormatContext) Dump_separator() uint8 { // return uint8(ctxt.dump_separator) // } -func (ctxt *AVFormatContext) Correct_ts_overflow() int { +func (ctxt *AvFormatContext) Correct_ts_overflow() int { return int(ctxt.correct_ts_overflow) } -func (ctxt *AVFormatContext) Max_index_size() uint { +func (ctxt *AvFormatContext) Max_index_size() uint { return uint(ctxt.max_index_size) } -func (ctxt *AVFormatContext) Max_picture_buffer() uint { +func (ctxt *AvFormatContext) Max_picture_buffer() uint { return uint(ctxt.max_picture_buffer) } -func (ctxt *AVFormatContext) Nb_chapters() uint { +func (ctxt *AvFormatContext) Nb_chapters() uint { return uint(ctxt.nb_chapters) } -func (ctxt *AVFormatContext) Nb_programs() uint { +func (ctxt *AvFormatContext) Nb_programs() uint { return uint(ctxt.nb_programs) } -func (ctxt *AVFormatContext) Nb_streams() uint { +func (ctxt *AvFormatContext) Nb_streams() uint { return uint(ctxt.nb_streams) } -func (ctxt *AVFormatContext) Packet_size() uint { +func (ctxt *AvFormatContext) Packet_size() uint { return uint(ctxt.packet_size) } -func (ctxt *AVFormatContext) Probesize() uint { +func (ctxt *AvFormatContext) Probesize() uint { return uint(ctxt.probesize) } diff --git a/avformat/stream.go b/avformat/stream.go index 7431f01..1ccf458 100644 --- a/avformat/stream.go +++ b/avformat/stream.go @@ -11,218 +11,218 @@ import ( "unsafe" ) -func (avs *AVStream) Codec() *AVCodecContext { - return (*AVCodecContext)(unsafe.Pointer(avs.codec)) +func (avs *AvStream) Codec() *AvCodecContext { + return (*AvCodecContext)(unsafe.Pointer(avs.codec)) } -func (avs *AVStream) Metadata() *AVDictionary { - return (*AVDictionary)(unsafe.Pointer(avs.metadata)) +func (avs *AvStream) Metadata() *AvDictionary { + return (*AvDictionary)(unsafe.Pointer(avs.metadata)) } -func (avs *AVStream) Index_entries() *AVIndexEntry { - return (*AVIndexEntry)(unsafe.Pointer(avs.index_entries)) +func (avs *AvStream) Index_entries() *AvIndexEntry { + return (*AvIndexEntry)(unsafe.Pointer(avs.index_entries)) } -func (avs *AVStream) Attached_pic() AVPacket { - return AVPacket(avs.attached_pic) +func (avs *AvStream) Attached_pic() AvPacket { + return AvPacket(avs.attached_pic) } -func (avs *AVStream) Side_data() *AVPacketSideData { - return (*AVPacketSideData)(unsafe.Pointer(avs.side_data)) +func (avs *AvStream) Side_data() *AvPacketSideData { + return (*AvPacketSideData)(unsafe.Pointer(avs.side_data)) } -func (avs *AVStream) Probe_data() AVProbeData { - return AVProbeData(avs.probe_data) +func (avs *AvStream) Probe_data() AvProbeData { + return AvProbeData(avs.probe_data) } -func (avs *AVStream) Avg_frame_rate() AVRational { - return AVRational(avs.avg_frame_rate) +func (avs *AvStream) Avg_frame_rate() AvRational { + return AvRational(avs.avg_frame_rate) } -// func (avs *AVStream) Display_aspect_ratio() *AVRational { -// return (*AVRational)(unsafe.Pointer(avs.display_aspect_ratio)) +// func (avs *AvStream) Display_aspect_ratio() *AvRational { +// return (*AvRational)(unsafe.Pointer(avs.display_aspect_ratio)) // } -func (avs *AVStream) R_frame_rate() AVRational { - return AVRational(avs.r_frame_rate) +func (avs *AvStream) R_frame_rate() AvRational { + return AvRational(avs.r_frame_rate) } -func (avs *AVStream) Sample_aspect_ratio() AVRational { - return AVRational(avs.sample_aspect_ratio) +func (avs *AvStream) Sample_aspect_ratio() AvRational { + return AvRational(avs.sample_aspect_ratio) } -func (avs *AVStream) Time_base() AVRational { - return AVRational(avs.time_base) +func (avs *AvStream) Time_base() AvRational { + return AvRational(avs.time_base) } -// func (avs *AVStream) Recommended_encoder_configuration() string { +// func (avs *AvStream) Recommended_encoder_configuration() string { // return C.GoString(avs.recommended_encoder_configuration) // } -func (avs *AVStream) Discard() AVDiscard { - return AVDiscard(avs.discard) +func (avs *AvStream) Discard() AvDiscard { + return AvDiscard(avs.discard) } -func (avs *AVStream) Need_parsing() AVStreamParseType { - return AVStreamParseType(avs.need_parsing) +func (avs *AvStream) Need_parsing() AvStreamParseType { + return AvStreamParseType(avs.need_parsing) } -func (avs *AVStream) Codec_info_nb_frames() int { +func (avs *AvStream) Codec_info_nb_frames() int { return int(avs.codec_info_nb_frames) } -func (avs *AVStream) Disposition() int { +func (avs *AvStream) Disposition() int { return int(avs.disposition) } -func (avs *AVStream) Event_flags() int { +func (avs *AvStream) Event_flags() int { return int(avs.event_flags) } -func (avs *AVStream) Id() int { +func (avs *AvStream) Id() int { return int(avs.id) } -func (avs *AVStream) Index() int { +func (avs *AvStream) Index() int { return int(avs.index) } -func (avs *AVStream) Inject_global_side_data() int { +func (avs *AvStream) Inject_global_side_data() int { return int(avs.inject_global_side_data) } -func (avs *AVStream) Last_ip_duration() int { +func (avs *AvStream) Last_ip_duration() int { return int(avs.last_IP_duration) } -func (avs *AVStream) Nb_decoded_frames() int { +func (avs *AvStream) Nb_decoded_frames() int { return int(avs.nb_decoded_frames) } -func (avs *AVStream) Nb_index_entries() int { +func (avs *AvStream) Nb_index_entries() int { return int(avs.nb_index_entries) } -func (avs *AVStream) Nb_side_data() int { +func (avs *AvStream) Nb_side_data() int { return int(avs.nb_side_data) } -func (avs *AVStream) Probe_packets() int { +func (avs *AvStream) Probe_packets() int { return int(avs.probe_packets) } -func (avs *AVStream) Pts_wrap_behavior() int { +func (avs *AvStream) Pts_wrap_behavior() int { return int(avs.pts_wrap_behavior) } -func (avs *AVStream) Request_probe() int { +func (avs *AvStream) Request_probe() int { return int(avs.request_probe) } -func (avs *AVStream) Skip_samples() int { +func (avs *AvStream) Skip_samples() int { return int(avs.skip_samples) } -func (avs *AVStream) Skip_to_keyframe() int { +func (avs *AvStream) Skip_to_keyframe() int { return int(avs.skip_to_keyframe) } -func (avs *AVStream) Stream_identifier() int { +func (avs *AvStream) Stream_identifier() int { return int(avs.stream_identifier) } -func (avs *AVStream) Update_initial_durations_done() int { +func (avs *AvStream) Update_initial_durations_done() int { return int(avs.update_initial_durations_done) } -func (avs *AVStream) Cur_dts() int64 { +func (avs *AvStream) Cur_dts() int64 { return int64(avs.cur_dts) } -func (avs *AVStream) Duration() int64 { +func (avs *AvStream) Duration() int64 { return int64(avs.duration) } -// func (avs *AVStream) First_discard_sample() int64 { +// func (avs *AvStream) First_discard_sample() int64 { // return int64(avs.first_discard_sample) // } -func (avs *AVStream) First_dts() int64 { +func (avs *AvStream) First_dts() int64 { return int64(avs.first_dts) } -func (avs *AVStream) Interleaver_chunk_duration() int64 { +func (avs *AvStream) Interleaver_chunk_duration() int64 { return int64(avs.interleaver_chunk_duration) } -func (avs *AVStream) Interleaver_chunk_size() int64 { +func (avs *AvStream) Interleaver_chunk_size() int64 { return int64(avs.interleaver_chunk_size) } -// func (avs *AVStream) Last_discard_sample() int64 { +// func (avs *AvStream) Last_discard_sample() int64 { // return int64(avs.last_discard_sample) // } -func (avs *AVStream) Last_dts_for_order_check() int64 { +func (avs *AvStream) Last_dts_for_order_check() int64 { return int64(avs.last_dts_for_order_check) } -func (avs *AVStream) Last_ip_pts() int64 { +func (avs *AvStream) Last_ip_pts() int64 { return int64(avs.last_IP_pts) } -func (avs *AVStream) Mux_ts_offset() int64 { +func (avs *AvStream) Mux_ts_offset() int64 { return int64(avs.mux_ts_offset) } -func (avs *AVStream) Nb_frames() int64 { +func (avs *AvStream) Nb_frames() int64 { return int64(avs.nb_frames) } -func (avs *AVStream) Pts_buffer() int64 { +func (avs *AvStream) Pts_buffer() int64 { return int64(avs.pts_buffer[0]) } -func (avs *AVStream) Pts_reorder_error() int64 { +func (avs *AvStream) Pts_reorder_error() int64 { return int64(avs.pts_reorder_error[0]) } -func (avs *AVStream) Pts_wrap_reference() int64 { +func (avs *AvStream) Pts_wrap_reference() int64 { return int64(avs.pts_wrap_reference) } -// func (avs *AVStream) Start_skip_samples() int64 { +// func (avs *AvStream) Start_skip_samples() int64 { // return int64(avs.start_skip_samples) // } -func (avs *AVStream) Start_time() int64 { +func (avs *AvStream) Start_time() int64 { return int64(avs.start_time) } -func (avs *AVStream) Parser() *AVCodecParserContext { - return (*AVCodecParserContext)(unsafe.Pointer(avs.parser)) +func (avs *AvStream) Parser() *AvCodecParserContext { + return (*AvCodecParserContext)(unsafe.Pointer(avs.parser)) } -func (avs *AVStream) Last_in_packet_buffer() *AVPacketList { - return (*AVPacketList)(unsafe.Pointer(avs.last_in_packet_buffer)) +func (avs *AvStream) Last_in_packet_buffer() *AvPacketList { + return (*AvPacketList)(unsafe.Pointer(avs.last_in_packet_buffer)) } -// func (avs *AVStream) Priv_pts() *FFFrac { +// func (avs *AvStream) Priv_pts() *FFFrac { // return (*FFFrac)(unsafe.Pointer(avs.priv_pts)) // } -func (avs *AVStream) Dts_misordered() uint8 { +func (avs *AvStream) Dts_misordered() uint8 { return uint8(avs.dts_misordered) } -func (avs *AVStream) Dts_ordered() uint8 { +func (avs *AvStream) Dts_ordered() uint8 { return uint8(avs.dts_ordered) } -func (avs *AVStream) Pts_reorder_error_count() uint8 { +func (avs *AvStream) Pts_reorder_error_count() uint8 { return uint8(avs.pts_reorder_error_count[0]) } -func (avs *AVStream) Index_entries_allocated_size() uint { +func (avs *AvStream) Index_entries_allocated_size() uint { return uint(avs.index_entries_allocated_size) } diff --git a/avutil/avutil.go b/avutil/avutil.go index a4fdfef..186132b 100644 --- a/avutil/avutil.go +++ b/avutil/avutil.go @@ -18,17 +18,17 @@ import ( ) type ( - AVOptions C.struct_AVOptions - AVDictionary C.struct_AVDictionary - AVTree C.struct_AVTree - AVRational C.struct_AVRational - AVMediaType C.enum_AVMediaType - AVPictureType C.enum_AVPictureType + AvOptions C.struct_AVOptions + AvDictionary C.struct_AVDictionary + AvTree C.struct_AVTree + AvRational C.struct_AVRational + AvMediaType C.enum_AVMediaType + AvPictureType C.enum_AVPictureType File C.FILE ) //unsigned avutil_version (void) -//Return the LIBAVUTIL_VERSION_INT constant. +//Return the LIBAvUTIL_VERSION_INT constant. func AvutilVersion() uint { return uint(C.avutil_version()) } @@ -45,15 +45,15 @@ func Avutil_license() string { return C.GoString(C.avutil_license()) } -//const char * av_get_media_type_string (enum AVMediaType media_type) +//const char * av_get_media_type_string (enum AvMediaType media_type) //Return a string describing the media_type enum, NULL if media_type is unknown. -func Av_get_media_type_string(mt AVMediaType) string { +func Av_get_media_type_string(mt AvMediaType) string { return C.GoString(C.av_get_media_type_string((C.enum_AVMediaType)(mt))) } -//char av_get_picture_type_char (enum AVPictureType pict_type) +//char av_get_picture_type_char (enum AvPictureType pict_type) //Return a single letter to describe the given picture type pict_type. -func Av_get_picture_type_char(pt AVPictureType) string { +func Av_get_picture_type_char(pt AvPictureType) string { return string(C.av_get_picture_type_char((C.enum_AVPictureType)(pt))) } @@ -76,8 +76,8 @@ func Av_fopen_utf8(p, m string) *File { return (*File)(f) } -//AVRational av_get_time_base_q (void) +//AvRational av_get_time_base_q (void) //Return the fractional representation of the internal time base. -func Av_get_time_base_q() AVRational { - return (AVRational)(C.av_get_time_base_q()) +func Av_get_time_base_q() AvRational { + return (AvRational)(C.av_get_time_base_q()) } diff --git a/avutil/frame.go b/avutil/frame.go index ebe0392..c0d2dbf 100644 --- a/avutil/frame.go +++ b/avutil/frame.go @@ -15,125 +15,125 @@ import ( ) type ( - AVBuffer C.struct_AVBuffer - AVBufferRef C.struct_AVBufferRef - AVBufferPool C.struct_AVBufferPool - AVFrame C.struct_AVFrame - AVFrameSideData C.struct_AVFrameSideData - AVFrameSideDataType C.enum_AVFrameSideDataType + AvBuffer C.struct_AVBuffer + AvBufferRef C.struct_AVBufferRef + AvBufferPool C.struct_AVBufferPool + AvFrame C.struct_AVFrame + AvFrameSideData C.struct_AVFrameSideData + AvFrameSideDataType C.enum_AVFrameSideDataType ) -//AVDictionary ** avpriv_frame_get_metadatap (AVFrame *frame) -func Avpriv_frame_get_metadatap(f *AVFrame) **AVDictionary { - return (**AVDictionary)(unsafe.Pointer(C.avpriv_frame_get_metadatap((*C.struct_AVFrame)(unsafe.Pointer(f))))) +//AvDictionary ** avpriv_frame_get_metadatap (AvFrame *frame) +func Avpriv_frame_get_metadatap(f *AvFrame) **AvDictionary { + return (**AvDictionary)(unsafe.Pointer(C.avpriv_frame_get_metadatap((*C.struct_AVFrame)(unsafe.Pointer(f))))) } -//int av_frame_set_qp_table (AVFrame *f, AVBufferRef *buf, int stride, int qp_type) -func Av_frame_set_qp_table(f *AVFrame, b *AVBufferRef, s, q int) int { +//int av_frame_set_qp_table (AvFrame *f, AvBufferRef *buf, int stride, int qp_type) +func Av_frame_set_qp_table(f *AvFrame, b *AvBufferRef, s, q int) int { return int(C.av_frame_set_qp_table((*C.struct_AVFrame)(unsafe.Pointer(f)), (*C.struct_AVBufferRef)(unsafe.Pointer(b)), C.int(s), C.int(q))) } -//int8_t * av_frame_get_qp_table (AVFrame *f, int *stride, int *type) -func Av_frame_get_qp_table(f *AVFrame, s, t *int) int8 { +//int8_t * av_frame_get_qp_table (AvFrame *f, int *stride, int *type) +func Av_frame_get_qp_table(f *AvFrame, s, t *int) int8 { return int8(*C.av_frame_get_qp_table((*C.struct_AVFrame)(unsafe.Pointer(f)), (*C.int)(unsafe.Pointer(s)), (*C.int)(unsafe.Pointer(t)))) } -// //static void get_frame_defaults (AVFrame *frame) -// func Get_frame_defaults(f *AVFrame) { +// //static void get_frame_defaults (AvFrame *frame) +// func Get_frame_defaults(f *AvFrame) { // C.get_frame_defaults(*C.struct_AVFrame(f)) // } -//AVFrame * av_frame_alloc (void) -//Allocate an AVFrame and set its fields to default values. -func Av_frame_alloc() *AVFrame { - return (*AVFrame)(unsafe.Pointer(C.av_frame_alloc())) +//AvFrame * av_frame_alloc (void) +//Allocate an AvFrame and set its fields to default values. +func Av_frame_alloc() *AvFrame { + return (*AvFrame)(unsafe.Pointer(C.av_frame_alloc())) } -//void av_frame_free (AVFrame **frame) +//void av_frame_free (AvFrame **frame) //Free the frame and any dynamically allocated objects in it, e.g. -func Av_frame_free(f *AVFrame) { +func Av_frame_free(f *AvFrame) { C.av_frame_free((**C.struct_AVFrame)(unsafe.Pointer(f))) } -// //static int get_video_buffer (AVFrame *frame, int align) -// func Get_video_buffer(f *AVFrame, a int) int { +// //static int get_video_buffer (AvFrame *frame, int align) +// func Get_video_buffer(f *AvFrame, a int) int { // return int(C.get_video_buffer(f, C.int(a))) // } -// //static int get_audio_buffer (AVFrame *frame, int align) -// func Get_audio_buffer(f *AVFrame, a int) int { +// //static int get_audio_buffer (AvFrame *frame, int align) +// func Get_audio_buffer(f *AvFrame, a int) int { // return C.get_audio_buffer(f, C.int(a)) // } -//int av_frame_get_buffer (AVFrame *frame, int align) +//int av_frame_get_buffer (AvFrame *frame, int align) //Allocate new buffer(s) for audio or video data. -func Av_frame_get_buffer(f *AVFrame, a int) int { +func Av_frame_get_buffer(f *AvFrame, a int) int { return int(C.av_frame_get_buffer((*C.struct_AVFrame)(unsafe.Pointer(f)), C.int(a))) } -//int av_frame_ref (AVFrame *dst, AVFrame *src) +//int av_frame_ref (AvFrame *dst, AvFrame *src) //Setup a new reference to the data described by an given frame. -func Av_frame_ref(d, s *AVFrame) int { +func Av_frame_ref(d, s *AvFrame) int { return int(C.av_frame_ref((*C.struct_AVFrame)(unsafe.Pointer(d)), (*C.struct_AVFrame)(unsafe.Pointer(s)))) } -//AVFrame * av_frame_clone (AVFrame *src) +//AvFrame * av_frame_clone (AvFrame *src) //Create a new frame that references the same data as src. -func Av_frame_clone(f *AVFrame) *AVFrame { - return (*AVFrame)(C.av_frame_clone((*C.struct_AVFrame)(unsafe.Pointer(f)))) +func Av_frame_clone(f *AvFrame) *AvFrame { + return (*AvFrame)(C.av_frame_clone((*C.struct_AVFrame)(unsafe.Pointer(f)))) } -//void av_frame_unref (AVFrame *frame) +//void av_frame_unref (AvFrame *frame) //Unreference all the buffers referenced by frame and reset the frame fields. -func Av_frame_unref(f *AVFrame) { +func Av_frame_unref(f *AvFrame) { cf := (*C.struct_AVFrame)(unsafe.Pointer(f)) C.av_frame_unref(cf) } -//void av_frame_move_ref (AVFrame *dst, AVFrame *src) +//void av_frame_move_ref (AvFrame *dst, AvFrame *src) //Move everythnig contained in src to dst and reset src. -func Av_frame_move_ref(d, s *AVFrame) { +func Av_frame_move_ref(d, s *AvFrame) { C.av_frame_move_ref((*C.struct_AVFrame)(unsafe.Pointer(d)), (*C.struct_AVFrame)(unsafe.Pointer(s))) } -//int av_frame_is_writable (AVFrame *frame) +//int av_frame_is_writable (AvFrame *frame) //Check if the frame data is writable. -func Av_frame_is_writable(f *AVFrame) int { +func Av_frame_is_writable(f *AvFrame) int { return int(C.av_frame_is_writable((*C.struct_AVFrame)(unsafe.Pointer(f)))) } -//int av_frame_make_writable (AVFrame *frame) +//int av_frame_make_writable (AvFrame *frame) //Ensure that the frame data is writable, avoiding data copy if possible. -func Av_frame_make_writable(f *AVFrame) int { +func Av_frame_make_writable(f *AvFrame) int { return int(C.av_frame_make_writable((*C.struct_AVFrame)(unsafe.Pointer(f)))) } -//int av_frame_copy_props (AVFrame *dst, const AVFrame *src) +//int av_frame_copy_props (AvFrame *dst, const AvFrame *src) //Copy only "metadata" fields from src to dst. -func Av_frame_copy_props(d, s *AVFrame) int { +func Av_frame_copy_props(d, s *AvFrame) int { return int(C.av_frame_copy_props((*C.struct_AVFrame)(unsafe.Pointer(d)), (*C.struct_AVFrame)(unsafe.Pointer(s)))) } -//AVBufferRef * av_frame_get_plane_buffer (AVFrame *frame, int plane) +//AvBufferRef * av_frame_get_plane_buffer (AvFrame *frame, int plane) //Get the buffer reference a given data plane is stored in. -func Av_frame_get_plane_buffer(f *AVFrame, p int) *AVBufferRef { - return (*AVBufferRef)(C.av_frame_get_plane_buffer((*C.struct_AVFrame)(unsafe.Pointer(f)), C.int(p))) +func Av_frame_get_plane_buffer(f *AvFrame, p int) *AvBufferRef { + return (*AvBufferRef)(C.av_frame_get_plane_buffer((*C.struct_AVFrame)(unsafe.Pointer(f)), C.int(p))) } -//AVFrameSideData * av_frame_new_side_data (AVFrame *frame, enum AVFrameSideDataType type, int size) +//AvFrameSideData * av_frame_new_side_data (AvFrame *frame, enum AvFrameSideDataType type, int size) //Add a new side data to a frame. -func Av_frame_new_side_data(f *AVFrame, d AVFrameSideDataType, s int) *AVFrameSideData { - return (*AVFrameSideData)(C.av_frame_new_side_data((*C.struct_AVFrame)(unsafe.Pointer(f)), (C.enum_AVFrameSideDataType)(d), C.int(s))) +func Av_frame_new_side_data(f *AvFrame, d AvFrameSideDataType, s int) *AvFrameSideData { + return (*AvFrameSideData)(C.av_frame_new_side_data((*C.struct_AVFrame)(unsafe.Pointer(f)), (C.enum_AVFrameSideDataType)(d), C.int(s))) } -//AVFrameSideData * av_frame_get_side_data (AVFrame *frame, enum AVFrameSideDataType type) -func Av_frame_get_side_data(f *AVFrame, t AVFrameSideDataType) *AVFrameSideData { - return (*AVFrameSideData)(C.av_frame_get_side_data((*C.struct_AVFrame)(unsafe.Pointer(f)), (C.enum_AVFrameSideDataType)(t))) +//AvFrameSideData * av_frame_get_side_data (AvFrame *frame, enum AvFrameSideDataType type) +func Av_frame_get_side_data(f *AvFrame, t AvFrameSideDataType) *AvFrameSideData { + return (*AvFrameSideData)(C.av_frame_get_side_data((*C.struct_AVFrame)(unsafe.Pointer(f)), (C.enum_AVFrameSideDataType)(t))) } -func Data(f *AVFrame) *uint8 { +func Data(f *AvFrame) *uint8 { return (*uint8)(unsafe.Pointer((*C.uint8_t)(unsafe.Pointer(&f.data)))) } -func Linesize(f *AVFrame) int { +func Linesize(f *AvFrame) int { return int(*(*C.int)(unsafe.Pointer(&f.linesize))) } diff --git a/example/tutorial01.c.source b/example/tutorial01.c.source index cc191c2..cc08825 100644 --- a/example/tutorial01.c.source +++ b/example/tutorial01.c.source @@ -3,7 +3,7 @@ // Tested on Gentoo, CVS version 5/01/07 compiled with GCC 4.1.1 // With updates from https://github.com/chelyaev/ffmpeg-tutorial // Updates tested on: -// LAVC 54.59.100, LAVF 54.29.104, LSWS 2.1.101 +// LAvC 54.59.100, LAvF 54.29.104, LSWS 2.1.101 // on GCC 4.7.2 in Debian February 2015 // A small sample program that shows how to use libavformat and libavcodec to @@ -30,12 +30,12 @@ #include // compatibility with newer API -#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55,28,1) +#if LIBAvCODEC_VERSION_INT < Av_VERSION_INT(55,28,1) #define av_frame_alloc avcodec_alloc_frame #define av_frame_free avcodec_free_frame #endif -void SaveFrame(AVFrame *pFrame, int width, int height, int iFrame) { +void SaveFrame(AvFrame *pFrame, int width, int height, int iFrame) { FILE *pFile; char szFilename[32]; int y; @@ -59,14 +59,14 @@ void SaveFrame(AVFrame *pFrame, int width, int height, int iFrame) { int main(int argc, char *argv[]) { // Initalizing these to NULL prevents segfaults! - AVFormatContext *pFormatCtx = NULL; + AvFormatContext *pFormatCtx = NULL; int i, videoStream; - AVCodecContext *pCodecCtxOrig = NULL; - AVCodecContext *pCodecCtx = NULL; - AVCodec *pCodec = NULL; - AVFrame *pFrame = NULL; - AVFrame *pFrameRGB = NULL; - AVPacket packet; + AvCodecContext *pCodecCtxOrig = NULL; + AvCodecContext *pCodecCtx = NULL; + AvCodec *pCodec = NULL; + AvFrame *pFrame = NULL; + AvFrame *pFrameRGB = NULL; + AvPacket packet; int frameFinished; int numBytes; uint8_t *buffer = NULL; @@ -93,7 +93,7 @@ int main(int argc, char *argv[]) { // Find the first video stream videoStream=-1; for(i=0; inb_streams; i++) - if(pFormatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO) { + if(pFormatCtx->streams[i]->codec->codec_type==AvMEDIA_TYPE_VIDEO) { videoStream=i; break; } @@ -122,7 +122,7 @@ int main(int argc, char *argv[]) { // Allocate video frame pFrame=av_frame_alloc(); - // Allocate an AVFrame structure + // Allocate an AvFrame structure pFrameRGB=av_frame_alloc(); if(pFrameRGB==NULL) return -1; @@ -133,9 +133,9 @@ int main(int argc, char *argv[]) { buffer=(uint8_t *)av_malloc(numBytes*sizeof(uint8_t)); // Assign appropriate parts of buffer to image planes in pFrameRGB - // Note that pFrameRGB is an AVFrame, but AVFrame is a superset - // of AVPicture - avpicture_fill((AVPicture *)pFrameRGB, buffer, PIX_FMT_RGB24, + // Note that pFrameRGB is an AvFrame, but AvFrame is a superset + // of AvPicture + avpicture_fill((AvPicture *)pFrameRGB, buffer, PIX_FMT_RGB24, pCodecCtx->width, pCodecCtx->height); // initialize SWS context for software scaling diff --git a/example/tutorial01.go b/example/tutorial01.go index 8f83088..2990f7b 100644 --- a/example/tutorial01.go +++ b/example/tutorial01.go @@ -16,57 +16,57 @@ func main() { filename := "sample.mp4" var ( - pFormatCtx *avformat.AVFormatContext - pCodecCtxOrig *avcodec.AVCodecContext - pCodecCtx *avcodec.AVCodecContext - pCodec *avcodec.AVCodec - pFrame *avutil.AVFrame - pFrameRGB *avutil.AVFrame - packet *avcodec.AVPacket - sws_ctx *swscale.SwsContext + ctxtFormat *avformat.AvFormatContext + ctxtSource *avcodec.AvCodecContext + ctxtDest *avcodec.AvCodecContext + videoCodec *avcodec.AvCodec + videoFrame *avutil.AvFrame + videoFrameRGB *avutil.AvFrame + packet *avcodec.AvPacket + ctxtSws *swscale.SwsContext videoStream int frameFinished int numBytes int url string ) - //media_type *avutil.AVMediaType + //media_type *avutil.AvMediaType // Register all formats and codecs avformat.Av_register_all() // Open video file - if avformat.Avformat_open_input(&pFormatCtx, filename, nil, nil) != 0 { + if avformat.Avformat_open_input(&ctxtFormat, filename, nil, nil) != 0 { log.Println("Error: Couldn't open file.") return } // Retrieve stream information - if avformat.Avformat_find_stream_info(pFormatCtx, nil) < 0 { + if avformat.Avformat_find_stream_info(ctxtFormat, nil) < 0 { log.Println("Error: Couldn't find stream information.") return } // Dump information about file onto standard error - avformat.Av_dump_format(pFormatCtx, 0, url, 0) + avformat.Av_dump_format(ctxtFormat, 0, url, 0) // Find the first video stream videoStream = -1 - //pFormatCtx->nb_streams - n := pFormatCtx.Nb_streams() + //ctxtFormat->nb_streams + n := ctxtFormat.Nb_streams() - //pFormatCtx->streams[] - s := pFormatCtx.Streams() - //s2 := avformat.StreamsOne(pFormatCtx, 1) + //ctxtFormat->streams[] + s := ctxtFormat.Streams() + //s2 := avformat.StreamsOne(ctxtFormat, 1) log.Print("Number of Streams:", n) for i := 0; i < int(n); i++ { - // pFormatCtx->streams[i]->codec->codec_type + // ctxtFormat->streams[i]->codec->codec_type log.Println("Stream Number:", i) - //FIX: AVMEDIA_TYPE_VIDEO - if (*avformat.AVCodecContext)(s.Codec()) != nil { + //FIX: AvMEDIA_TYPE_VIDEO + if (*avformat.AvCodecContext)(s.Codec()) != nil { videoStream = i break } @@ -80,74 +80,75 @@ func main() { codec := s.Codec() // Get a pointer to the codec context for the video stream - //pCodecCtxOrig = pFormatCtx.streams[videoStream].codec - pCodecCtxOrig = (*avcodec.AVCodecContext)(unsafe.Pointer(&codec)) - log.Println("Bit Rate:", pCodecCtxOrig.Bit_rate()) - log.Println("Channels:", pCodecCtxOrig.Channels()) - log.Println("Coded_height:", pCodecCtxOrig.Coded_height()) - log.Println("Coded_width:", pCodecCtxOrig.Coded_width()) - log.Println("Coder_type:", pCodecCtxOrig.Coder_type()) - log.Println("Height:", pCodecCtxOrig.Height()) - log.Println("Profile:", pCodecCtxOrig.Profile()) - log.Println("Width:", pCodecCtxOrig.Width()) - log.Println("Codec ID:", pCodecCtxOrig.Codec_id()) + //ctxtSource = ctxtFormat.streams[videoStream].codec + ctxtSource = (*avcodec.AvCodecContext)(unsafe.Pointer(&codec)) + log.Println("Bit Rate:", ctxtSource.BitRate()) + log.Println("Channels:", ctxtSource.Channels()) + log.Println("Coded_height:", ctxtSource.CodedHeight()) + log.Println("Coded_width:", ctxtSource.CodedWidth()) + log.Println("Coder_type:", ctxtSource.CoderType()) + log.Println("Height:", ctxtSource.Height()) + log.Println("Profile:", ctxtSource.Profile()) + log.Println("Width:", ctxtSource.Width()) + log.Println("Codec ID:", ctxtSource.CodecId()) //C.enum_AVCodecID - codec_id := pCodecCtxOrig.Codec_id() + codec_id := ctxtSource.CodecId() // Find the decoder for the video stream - pCodec = avcodec.Avcodec_find_decoder(codec_id) - if pCodec == nil { + videoCodec = avcodec.AvcodecFindDecoder(codec_id) + if videoCodec == nil { log.Println("Error: Unsupported codec!") return // Codec not found } // Copy context - pCodecCtx = avcodec.Avcodec_alloc_context3(pCodec) + ctxtDest = videoCodec.AvcodecAllocContext3() - if avcodec.Avcodec_copy_context(pCodecCtx, pCodecCtxOrig) != 0 { + if ctxtDest.AvcodecCopyContext(ctxtSource) != 0 { log.Println("Error: Couldn't copy codec context") return // Error copying codec context } // Open codec - if avcodec.Avcodec_open2(pCodecCtx, pCodec, nil) < 0 { + if ctxtDest.AvcodecOpen2(videoCodec, nil) < 0 { return // Could not open codec } // Allocate video frame - pFrame = avutil.Av_frame_alloc() + videoFrame = avutil.Av_frame_alloc() - // Allocate an AVFrame structure - if pFrameRGB = avutil.Av_frame_alloc(); pFrameRGB == nil { + // Allocate an AvFrame structure + if videoFrameRGB = avutil.Av_frame_alloc(); videoFrameRGB == nil { return } //##TODO - var a swscale.AVPixelFormat + var a swscale.AvPixelFormat var b int - //avcodec.AVPixelFormat + //avcodec.AvPixelFormat //avcodec.PIX_FMT_RGB24 //avcodec.SWS_BILINEAR - w := pCodecCtx.Width() - h := pCodecCtx.Height() - pix_fmt := pCodecCtx.Pix_fmt() + w := ctxtDest.Width() + h := ctxtDest.Height() + pix_fmt := ctxtDest.PixFmt() // Determine required buffer size and allocate buffer - numBytes = avcodec.Avpicture_get_size((avcodec.AVPixelFormat)(a), w, h) + numBytes = avcodec.AvpictureGetSize((avcodec.AvPixelFormat)(a), w, h) buffer := avutil.Av_malloc(uintptr(numBytes)) - // Assign appropriate parts of buffer to image planes in pFrameRGB - // Note that pFrameRGB is an AVFrame, but AVFrame is a superset - // of AVPicture - avcodec.Avpicture_fill((*avcodec.AVPicture)(unsafe.Pointer(pFrameRGB)), (*uint8)(buffer), (avcodec.AVPixelFormat)(a), w, h) + // Assign appropriate parts of buffer to image planes in videoFrameRGB + // Note that videoFrameRGB is an AvFrame, but AvFrame is a superset + // of AvPicture + avp := (*avcodec.AvPicture)(unsafe.Pointer(videoFrameRGB)) + avp.AvpictureFill((*uint8)(buffer), (avcodec.AvPixelFormat)(a), w, h) // initialize SWS context for software scaling - sws_ctx = swscale.Sws_getContext(w, + ctxtSws = swscale.Sws_getContext(w, h, - (swscale.AVPixelFormat)(pix_fmt), + (swscale.AvPixelFormat)(pix_fmt), w, h, a, @@ -160,21 +161,21 @@ func main() { // Read frames and save first five frames to disk i := 0 - for avformat.Av_read_frame(pFormatCtx, packet) >= 0 { + for avformat.Av_read_frame(ctxtFormat, packet) >= 0 { // Is this a packet from the video stream? - s := packet.Stream_index() + s := packet.StreamIndex() if s == videoStream { // Decode video frame - avcodec.Avcodec_decode_video2(pCodecCtx, (*avcodec.AVFrame)(unsafe.Pointer(pFrame)), &frameFinished, packet) + ctxtDest.AvcodecDecodeVideo2((*avcodec.AvFrame)(unsafe.Pointer(videoFrame)), &frameFinished, packet) // Did we get a video frame? if frameFinished > 0 { // Convert the image from its native format to RGB - d := avutil.Data(pFrame) - l := avutil.Linesize(pFrame) - dr := avutil.Data(pFrameRGB) - lr := avutil.Linesize(pFrameRGB) - swscale.Sws_scale(sws_ctx, + d := avutil.Data(videoFrame) + l := avutil.Linesize(videoFrame) + dr := avutil.Data(videoFrameRGB) + lr := avutil.Linesize(videoFrameRGB) + swscale.Sws_scale(ctxtSws, d, l, 0, @@ -185,33 +186,33 @@ func main() { // Save the frame to disk if i <= 5 { - saveFrame(pFrameRGB, w, h, i) + saveFrame(videoFrameRGB, w, h, i) } i++ } } // Free the packet that was allocated by av_read_frame - avcodec.Av_free_packet(packet) + packet.AvFreePacket() } // Free the RGB image avutil.Av_free(buffer) - avutil.Av_frame_free(pFrameRGB) + avutil.Av_frame_free(videoFrameRGB) // Free the YUV frame - avutil.Av_frame_free(pFrame) + avutil.Av_frame_free(videoFrame) // Close the codecs - avcodec.Avcodec_close(pCodecCtx) - avcodec.Avcodec_close(pCodecCtxOrig) + ctxtDest.AvcodecClose() + ctxtSource.AvcodecClose() // Close the video file - avformat.Avformat_close_input(pFormatCtx) + avformat.Avformat_close_input(ctxtFormat) } -func saveFrame(pFrame *avutil.AVFrame, width int, height int, iFrame int) { +func saveFrame(videoFrame *avutil.AvFrame, width int, height int, iFrame int) { var szFilename string var y int @@ -233,8 +234,8 @@ func saveFrame(pFrame *avutil.AVFrame, width int, height int, iFrame int) { // Write pixel data for y = 0; y < height; y++ { - // d := avutil.Data(pFrame) - // l := avutil.Linesize(pFrame) + // d := avutil.Data(videoFrame) + // l := avutil.Linesize(videoFrame) //##TODO f := make([]byte, 100) file.Write(f) diff --git a/example/versions.go b/example/versions.go index d67db09..23f88a0 100644 --- a/example/versions.go +++ b/example/versions.go @@ -16,11 +16,11 @@ func main() { // Register all formats and codecs avformat.Av_register_all() - log.Printf("AVFilter Version:\t%v", avfilter.Avfilter_version()) - log.Printf("AVDevice Version:\t%v", avdevice.Avdevice_version()) + log.Printf("AvFilter Version:\t%v", avfilter.Avfilter_version()) + log.Printf("AvDevice Version:\t%v", avdevice.Avdevice_version()) log.Printf("SWScale Version:\t%v", swscale.Swscale_version()) - log.Printf("AVUtil Version:\t%v", avutil.AvutilVersion()) - log.Printf("AVCodec Version:\t%v", avcodec.Avcodec_version()) + log.Printf("AvUtil Version:\t%v", avutil.AvutilVersion()) + log.Printf("AvCodec Version:\t%v", avcodec.AvcodecVersion()) log.Printf("Resample Version:\t%v", swresample.Swresample_license()) } diff --git a/swresample/swresample.go b/swresample/swresample.go index fecacc8..59d863b 100644 --- a/swresample/swresample.go +++ b/swresample/swresample.go @@ -19,15 +19,15 @@ import ( type ( SwrContext C.struct_SwrContext - AVFrame C.struct_AVFrame - AVClass C.struct_AVClass - AVSampleFormat C.enum_AVSampleFormat + AvFrame C.struct_AVFrame + AvClass C.struct_AVClass + AvSampleFormat C.enum_AVSampleFormat ) -//const AVClass * swr_get_class (void) -//Get the AVClass for SwrContext. -func Swr_get_class() *AVClass { - return (*AVClass)(C.swr_get_class()) +//const AvClass * swr_get_class (void) +//Get the AvClass for SwrContext. +func Swr_get_class() *AvClass { + return (*AvClass)(C.swr_get_class()) } //SwrContext constructor functions @@ -49,9 +49,9 @@ func Swr_is_initialized(s *SwrContext) int { return int(C.swr_is_initialized((*C.struct_SwrContext)(s))) } -//struct SwrContext * swr_alloc_set_opts (struct SwrContext *s, int64_t out_ch_layout, enum AVSampleFormat out_sample_fmt, int out_sample_rate, int64_t in_ch_layout, enum AVSampleFormat in_sample_fmt, int in_sample_rate, int log_offset, void *log_ctx) +//struct SwrContext * swr_alloc_set_opts (struct SwrContext *s, int64_t out_ch_layout, enum AvSampleFormat out_sample_fmt, int out_sample_rate, int64_t in_ch_layout, enum AvSampleFormat in_sample_fmt, int in_sample_rate, int log_offset, void *log_ctx) //Allocate SwrContext if needed and set/reset common parameters. -func Swr_alloc_set_opts(s *SwrContext, ocl int64, osf AVSampleFormat, osr int, icl int64, isf AVSampleFormat, isr, lo, lc int) *SwrContext { +func Swr_alloc_set_opts(s *SwrContext, ocl int64, osf AvSampleFormat, osr int, icl int64, isf AvSampleFormat, isr, lo, lc int) *SwrContext { return (*SwrContext)(C.swr_alloc_set_opts((*C.struct_SwrContext)(s), C.int64_t(ocl), (C.enum_AVSampleFormat)(osf), C.int(osr), C.int64_t(icl), (C.enum_AVSampleFormat)(isf), C.int(isr), C.int(lo), unsafe.Pointer(&lc))) } @@ -82,7 +82,7 @@ func Swr_next_pts(s *SwrContext, pts int64) int64 { } //Low-level option setting functions -//These functons provide a means to set low-level options that is not possible with the AVOption API. +//These functons provide a means to set low-level options that is not possible with the AvOption API. //int swr_set_compensation (struct SwrContext *s, int sample_delta, int compensation_distance) //Activate resampling compensation ("soft" compensation). func Swr_set_compensation(s *SwrContext, sd, cd int) int { @@ -139,15 +139,15 @@ func Swresample_license() string { return C.GoString(C.swresample_license()) } -//AVFrame based API -//int swr_convert_frame (SwrContext *swr, AVFrame *output, const AVFrame *input) -//Convert the samples in the input AVFrame and write them to the output AVFrame. -func Swr_convert_frame(s *SwrContext, o, i *AVFrame) int { +//AvFrame based API +//int swr_convert_frame (SwrContext *swr, AvFrame *output, const AvFrame *input) +//Convert the samples in the input AvFrame and write them to the output AvFrame. +func Swr_convert_frame(s *SwrContext, o, i *AvFrame) int { return int(C.swr_convert_frame((*C.struct_SwrContext)(s), (*C.struct_AVFrame)(o), (*C.struct_AVFrame)(i))) } -//int swr_config_frame (SwrContext *swr, const AVFrame *out, const AVFrame *in) -//Configure or reconfigure the SwrContext using the information provided by the AVFrames. -func Swr_config_frame(s *SwrContext, o, i *AVFrame) int { +//int swr_config_frame (SwrContext *swr, const AvFrame *out, const AvFrame *in) +//Configure or reconfigure the SwrContext using the information provided by the AvFrames. +func Swr_config_frame(s *SwrContext, o, i *AvFrame) int { return int(C.swr_config_frame((*C.struct_SwrContext)(s), (*C.struct_AVFrame)(o), (*C.struct_AVFrame)(i))) } diff --git a/swscale/swscale.go b/swscale/swscale.go index b2a4fdc..8de927d 100644 --- a/swscale/swscale.go +++ b/swscale/swscale.go @@ -24,8 +24,8 @@ type ( SwsContext C.struct_SwsContext SwsFilter C.struct_SwsFilter SwsVector C.struct_SwsVector - AVClass C.struct_AVClass - AVPixelFormat C.enum_AVPixelFormat + AvClass C.struct_AVClass + AvPixelFormat C.enum_AVPixelFormat ) //unsigned swscale_version (void) @@ -52,20 +52,20 @@ func Sws_getCoefficients(c int) *int { return (*int)(unsafe.Pointer(C.sws_getCoefficients(C.int(c)))) } -//int sws_isSupportedInput (enum AVPixelFormat pix_fmt) +//int sws_isSupportedInput (enum AvPixelFormat pix_fmt) //Return a positive value if pix_fmt is a supported input format, 0 otherwise. -func Sws_isSupportedInput(p AVPixelFormat) int { +func Sws_isSupportedInput(p AvPixelFormat) int { return int(C.sws_isSupportedInput((C.enum_AVPixelFormat)(p))) } -//int sws_isSupportedOutput (enum AVPixelFormat pix_fmt) +//int sws_isSupportedOutput (enum AvPixelFormat pix_fmt) //Return a positive value if pix_fmt is a supported output format, 0 otherwise. -func Sws_isSupportedOutput(p AVPixelFormat) int { +func Sws_isSupportedOutput(p AvPixelFormat) int { return int(C.sws_isSupportedOutput((C.enum_AVPixelFormat)(p))) } -//int sws_isSupportedEndiannessConversion (enum AVPixelFormat pix_fmt) -func Sws_isSupportedEndiannessConversion(p AVPixelFormat) int { +//int sws_isSupportedEndiannessConversion (enum AvPixelFormat pix_fmt) +func Sws_isSupportedEndiannessConversion(p AvPixelFormat) int { return int(C.sws_isSupportedEndiannessConversion((C.enum_AVPixelFormat)(p))) } @@ -87,9 +87,9 @@ func Sws_freeContext(ctxt *SwsContext) { C.sws_freeContext((*C.struct_SwsContext)(ctxt)) } -//struct SwsContext * sws_getContext (int srcW, int srcH, enum AVPixelFormat srcFormat, int dstW, int dstH, enum AVPixelFormat dstFormat, int flags, SwsFilter *srcFilter, SwsFilter *dstFilter, const double *param) +//struct SwsContext * sws_getContext (int srcW, int srcH, enum AvPixelFormat srcFormat, int dstW, int dstH, enum AvPixelFormat dstFormat, int flags, SwsFilter *srcFilter, SwsFilter *dstFilter, const double *param) //Allocate and return an SwsContext. -func Sws_getContext(sw, sh int, sf AVPixelFormat, dw, dh int, df AVPixelFormat, f int, sfl, dfl *SwsFilter, p *int) *SwsContext { +func Sws_getContext(sw, sh int, sf AvPixelFormat, dw, dh int, df AvPixelFormat, f int, sfl, dfl *SwsFilter, p *int) *SwsContext { return (*SwsContext)(C.sws_getContext(C.int(sw), C.int(sh), (C.enum_AVPixelFormat)(sf), C.int(dw), C.int(dh), (C.enum_AVPixelFormat)(df), C.int(f), (*C.struct_SwsFilter)(sfl), (*C.struct_SwsFilter)(dfl), (*C.double)(unsafe.Pointer(p)))) } @@ -185,9 +185,9 @@ func Sws_cloneVec(a *SwsVector) *SwsVector { return (*SwsVector)(unsafe.Pointer(C.sws_cloneVec((*C.struct_SwsVector)(a)))) } -//void sws_printVec2 (SwsVector *a, AVClass *log_ctx, int log_level) +//void sws_printVec2 (SwsVector *a, AvClass *log_ctx, int log_level) //Print with av_log() a textual representation of the vector a if log_level <= av_log_level. -func Sws_printVec2(a *SwsVector, lctx *AVClass, l int) { +func Sws_printVec2(a *SwsVector, lctx *AvClass, l int) { C.sws_printVec2((*C.struct_SwsVector)(a), (*C.struct_AVClass)(lctx), C.int(l)) } @@ -206,9 +206,9 @@ func Sws_freeFilter(f *SwsFilter) { C.sws_freeFilter((*C.struct_SwsFilter)(f)) } -//struct SwsContext * sws_getCachedContext (struct SwsContext *context, int srcW, int srcH, enum AVPixelFormat srcFormat, int dstW, int dstH, enum AVPixelFormat dstFormat, int flags, SwsFilter *srcFilter, SwsFilter *dstFilter, const double *param) +//struct SwsContext * sws_getCachedContext (struct SwsContext *context, int srcW, int srcH, enum AvPixelFormat srcFormat, int dstW, int dstH, enum AvPixelFormat dstFormat, int flags, SwsFilter *srcFilter, SwsFilter *dstFilter, const double *param) //Check if context can be reused, otherwise reallocate a new one. -func Sws_getCachedContext(ctxt *SwsContext, sw, sh int, sf AVPixelFormat, dw, dh int, df AVPixelFormat, f int, sfl, dfl *SwsFilter, p *float64) *SwsContext { +func Sws_getCachedContext(ctxt *SwsContext, sw, sh int, sf AvPixelFormat, dw, dh int, df AvPixelFormat, f int, sfl, dfl *SwsFilter, p *float64) *SwsContext { return (*SwsContext)(C.sws_getCachedContext((*C.struct_SwsContext)(ctxt), C.int(sw), C.int(sh), (C.enum_AVPixelFormat)(sf), C.int(dw), C.int(dh), (C.enum_AVPixelFormat)(df), C.int(f), (*C.struct_SwsFilter)(sfl), (*C.struct_SwsFilter)(dfl), (*C.double)(p))) } @@ -224,8 +224,8 @@ func Sws_convertPalette8ToPacked24(s, d *uint8, px int, p *uint8) { C.sws_convertPalette8ToPacked24((*C.uint8_t)(s), (*C.uint8_t)(d), C.int(px), (*C.uint8_t)(p)) } -//const AVClass * sws_get_class (void) -//Get the AVClass for swsContext. -func Sws_get_class() *AVClass { - return (*AVClass)(C.sws_get_class()) +//const AvClass * sws_get_class (void) +//Get the AvClass for swsContext. +func Sws_get_class() *AvClass { + return (*AvClass)(C.sws_get_class()) }