[FFmpeg-devel] [PATCH] Bunch of accumulated patches...

Michael Niedermayer michaelni
Tue Jan 15 03:37:25 CET 2008


On Mon, Jan 14, 2008 at 09:03:49PM -0500, Rich Felker wrote:
> On Tue, Jan 15, 2008 at 01:47:27AM +0100, Michael Niedermayer wrote:
> > > Ah yeah I forgot the positivity requirement. So negative values makes
> > > it easy to define your own errors.
> > 
> > functions in libav* return negative ints as errors
> > we will not change all int return types to long long (because its inefficient
> > on 32bit archs), so the positivity vs. negativity doesnt help
> > 
> > this leaves 4 obvious options
> > 1. drop all usage of POSIX E*
> 
> This would probably be my preference.
> 

> > 2. only use POSIX E* (that is somewhat limiting as many errors cases dont
> >    have a reasonably matching E* from POSIX)
> 
> Also somewhat reasonable but I agree it's limiting. Could you give
> some examples of what errors are used for in libav* so the
> requirements are a bit clearer?

copy and paste from the source:
#define AVERROR_UNKNOWN     AVERROR(EINVAL)  /**< unknown error */
#define AVERROR_IO          AVERROR(EIO)     /**< I/O error */
#define AVERROR_NUMEXPECTED AVERROR(EDOM)    /**< Number syntax expected in filename. */
#define AVERROR_INVALIDDATA AVERROR(EINVAL)  /**< invalid data found */
#define AVERROR_NOMEM       AVERROR(ENOMEM)  /**< not enough memory */
#define AVERROR_NOFMT       AVERROR(EILSEQ)  /**< unknown format */
#define AVERROR_NOTSUPP     AVERROR(ENOSYS)  /**< Operation not supported. */
#define AVERROR_NOENT       AVERROR(ENOENT)  /**< No such file or directory. */
#define AVERROR_PATCHWELCOME    -MKTAG('P','A','W','E') /**< Not yet implemented in FFmpeg. Patches welcome. */

we also use
EAGAIN
EINTR if url_interrupt_cb() returns non zero in some loops in network code
EPIPE (seeking with non seekable)

note, the AVERROR() is just a macro to workaround beos non posix E*, aka
they have the +- wrong ...


[...]

> > 4. add a check to configure to choose unused E* (this is easy by using
> >    strerror())
> 
> Are you sure? strerror returns a string for unknown errors, and the
> string it returns is implementation-defined. I don't see how it can
> help you identify which error values are unused.

iam not sure, iam just RTFMing and beliving what it says:
man strerror:
---
On some systems, strerror() returns NULL if the error number is unknown. On
other systems, strerror() returns a string something like "Error nnn occurred"
and sets errno to EINVAL if the error number is unknown.
---

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Frequently ignored awnser#1 FFmpeg bugs should be sent to our bugtracker, user
questions for the command line tools ffmpeg, ffplay, ... as well as questions
about how to use libav* should be sent to the ffmpeg-user mailinglist.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20080115/6d21b315/attachment.pgp>



More information about the ffmpeg-devel mailing list