[FFmpeg-devel] [RFC] The meaning of AVERROR_NOTSUPP

Michael Niedermayer michaelni
Sat Mar 27 02:17:04 CET 2010


On Sat, Mar 27, 2010 at 12:51:13AM +0100, Stefano Sabatini wrote:
> On date Tuesday 2010-03-23 00:57:17 +0100, Stefano Sabatini encoded:
> > On date Monday 2010-03-22 10:27:03 +0100, Michael Niedermayer encoded:
> > > On Sun, Mar 21, 2010 at 10:51:12PM +0100, Stefano Sabatini wrote:
> > > > On date Sunday 2010-03-21 22:38:28 +0100, Michael Niedermayer encoded:
> [...]
> > > AVERROR_NOTSUPP feels more toward a feature that can be supported but is not
> > > we also might want to have a 
> > > AVERROR_DISABLED for a feature suported but not compiled in
> > > but then there is AVERROR_PATCHWELCOME and iam not sure what AVERROR_NOTSUPP is
> > > supposed to mean then
> > > anyway, error docs are poor and you are changing error code without their
> > > meaning being clearly documented.
> > 
> > Description for AVERROR_NOTSUPP:
> > #define AVERROR_NOTSUPP     AVERROR(ENOSYS)  /**< Operation not supported. */
> > 
> > Description for AVERROR_PATCHWELCOME:
> > #define AVERROR_PATCHWELCOME    (-MKTAG('P','A','W','E')) /**< Not yet implemented in FFmpeg. Patches welcome. */
> > 
> > My interpretation of AVERROR_NOTSUPP:
> > The *operation* requested is not legal/valid, as it is not supported
> > by the element being requested.
> > 
> > So AVERROR_NOTSUPP should be returned just in case a certain operation
> > is requested to an object for which that operation doesn't make sense
> > / cannot be implemented, and in this sense is semantically near to the
> > meaning of ENOSYS.
> > 
> > Think for example of a seek operation in a pipe, for which
> > AVERROR_PATCHWELCOME wouldn't make sense.
> > 
> > I recognize though that the term "supported" in the "not supported"
> > expression may lead to confusion, as it suggests what you said, so I'd
> > suggest to use instead AVERROR_ILLEGALOPERATION or
> > AVERROR_INVALIDOPERATION.
> > 
> > As for the distinction between AVERROR_DISABLED and
> > AVERROR_PATCHWELCOME, I don't think that would be a good idea
> > implementation-wise, as most of the time a program can't tell the
> > distinction amongst the two.
> > 
> > For example av_error_input_format() doesn't know if it can't recognize
> > a format because it has not been compiled in, because the format is
> > not implemented, or because we inflicted to him bogus random data.
> > 
> > If you agree with the semantics I proposed, I'll post a patch for
> > clarifying the description of AVERROR_NOTSUPP, also tell me what do
> > you think about the AVERROR_INVALIDOPERATION rename.
> 
> Currently we have just one use of AVERROR_NOTSUPP:
> 
> in libavformat/file.c:
> static int64_t file_seek(URLContext *h, int64_t pos, int whence)
> {
>     int fd = (intptr_t) h->priv_data;
>     if (whence != SEEK_SET && whence != SEEK_CUR && whence != SEEK_END)
>         return AVERROR_NOTSUPP;
>     return lseek(fd, pos, whence);
> }
> 
> This suggests the interpretation of AVERROR_NOTSUPP as "Operation
> non-valid or illegal".

no, this interpretation is wrong
the 4th case for getting the filesize is surely not an invalid or illegal
operation for a file.

[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Breaking DRM is a little like attempting to break through a door even
though the window is wide open and the only thing in the house is a bunch
of things you dont want and which you would get tomorrow for free anyway
-------------- 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/20100327/902ad2af/attachment.pgp>



More information about the ffmpeg-devel mailing list