mirror of
https://github.com/asticode/go-astiav.git
synced 2024-05-28 13:53:18 +08:00
69 lines
2.2 KiB
Go
69 lines
2.2 KiB
Go
package astiav
|
|
|
|
//#cgo pkg-config: libavutil
|
|
//#include <libavutil/avutil.h>
|
|
//#include <errno.h>
|
|
import "C"
|
|
|
|
type Error int
|
|
|
|
// https://github.com/FFmpeg/FFmpeg/blob/n5.0/libavutil/error.h#L51
|
|
const (
|
|
ErrBsfNotFound = Error(C.AVERROR_BSF_NOT_FOUND)
|
|
ErrBufferTooSmall = Error(C.AVERROR_BUFFER_TOO_SMALL)
|
|
ErrBug = Error(C.AVERROR_BUG)
|
|
ErrBug2 = Error(C.AVERROR_BUG2)
|
|
ErrDecoderNotFound = Error(C.AVERROR_DECODER_NOT_FOUND)
|
|
ErrDemuxerNotFound = Error(C.AVERROR_DEMUXER_NOT_FOUND)
|
|
ErrEagain = Error(-(C.EAGAIN))
|
|
ErrEio = Error(-(C.EIO))
|
|
ErrEncoderNotFound = Error(C.AVERROR_ENCODER_NOT_FOUND)
|
|
ErrEof = Error(C.AVERROR_EOF)
|
|
ErrEperm = Error(-(C.EPERM))
|
|
ErrEpipe = Error(-(C.EPIPE))
|
|
ErrEtimedout = Error(-(C.ETIMEDOUT))
|
|
ErrExit = Error(C.AVERROR_EXIT)
|
|
ErrExperimental = Error(C.AVERROR_EXPERIMENTAL)
|
|
ErrExternal = Error(C.AVERROR_EXTERNAL)
|
|
ErrFilterNotFound = Error(C.AVERROR_FILTER_NOT_FOUND)
|
|
ErrHttpBadRequest = Error(C.AVERROR_HTTP_BAD_REQUEST)
|
|
ErrHttpForbidden = Error(C.AVERROR_HTTP_FORBIDDEN)
|
|
ErrHttpNotFound = Error(C.AVERROR_HTTP_NOT_FOUND)
|
|
ErrHttpOther4Xx = Error(C.AVERROR_HTTP_OTHER_4XX)
|
|
ErrHttpServerError = Error(C.AVERROR_HTTP_SERVER_ERROR)
|
|
ErrHttpUnauthorized = Error(C.AVERROR_HTTP_UNAUTHORIZED)
|
|
ErrInputChanged = Error(C.AVERROR_INPUT_CHANGED)
|
|
ErrInvaliddata = Error(C.AVERROR_INVALIDDATA)
|
|
ErrMaxStringSize = Error(C.AV_ERROR_MAX_STRING_SIZE)
|
|
ErrMuxerNotFound = Error(C.AVERROR_MUXER_NOT_FOUND)
|
|
ErrOptionNotFound = Error(C.AVERROR_OPTION_NOT_FOUND)
|
|
ErrOutputChanged = Error(C.AVERROR_OUTPUT_CHANGED)
|
|
ErrPatchwelcome = Error(C.AVERROR_PATCHWELCOME)
|
|
ErrProtocolNotFound = Error(C.AVERROR_PROTOCOL_NOT_FOUND)
|
|
ErrStreamNotFound = Error(C.AVERROR_STREAM_NOT_FOUND)
|
|
ErrUnknown = Error(C.AVERROR_UNKNOWN)
|
|
)
|
|
|
|
func newError(ret C.int) error {
|
|
i := int(ret)
|
|
if i >= 0 {
|
|
return nil
|
|
}
|
|
return Error(i)
|
|
}
|
|
|
|
func (e Error) Error() string {
|
|
s, _ := stringFromC(255, func(buf *C.char, size C.size_t) error {
|
|
return newError(C.av_strerror(C.int(e), buf, size))
|
|
})
|
|
return s
|
|
}
|
|
|
|
func (e Error) Is(err error) bool {
|
|
a, ok := err.(Error)
|
|
if !ok {
|
|
return false
|
|
}
|
|
return int(a) == int(e)
|
|
}
|