On 01/16/2012 08:25 AM, Dustin Brody wrote:
> ---
> libavformat/avformat.h | 2 +-
> libavformat/avidec.c | 4 ++--
> libavformat/options.c | 8 +++++---
> 3 files changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/libavformat/avformat.h b/libavformat/avformat.h
> index fff911a..155fc03 100644
> --- a/libavformat/avformat.h
> +++ b/libavformat/avformat.h
> @@ -1111,7 +1111,7 @@ typedef struct AVFormatContext {
> * - encoding: unused
> * - decoding: Set by user.
> */
> - int error_recognition;
> + int err_recognition;
This is an API breakage and would require a major bump. If the rename is
really needed, please wrap the old parameter in a version guard and add
the new one at the bottom to maintain ABI compatibility. Also make sure
to not break current behavior when someone uses error_recognition. The
API fallbacks can also go under the same version guard.
>
> /**
> * Custom interrupt callbacks for the I/O layer.
> diff --git a/libavformat/avidec.c b/libavformat/avidec.c
> index b45224f..5829164 100644
> --- a/libavformat/avidec.c
> +++ b/libavformat/avidec.c
> @@ -666,7 +666,7 @@ static int avi_read_header(AVFormatContext *s,
> AVFormatParameters *ap)
> case MKTAG('i', 'n', 'd', 'x'):
> i= avio_tell(pb);
> if(pb->seekable && !(s->flags & AVFMT_FLAG_IGNIDX) &&
> - read_braindead_odml_indx(s, 0) < 0 && s->error_recognition >=
> FF_ER_EXPLODE){
> + read_braindead_odml_indx(s, 0) < 0 && (s->err_recognition &
> AV_EF_EXPLODE)){
> goto fail;
> }
> avio_seek(pb, i+size, SEEK_SET);
> @@ -705,7 +705,7 @@ static int avi_read_header(AVFormatContext *s,
> AVFormatParameters *ap)
> if(size > 1000000){
> av_log(s, AV_LOG_ERROR, "Something went wrong during header
> parsing, "
> "I will ignore it and try to
> continue anyway.\n");
> - if (s->error_recognition >= FF_ER_EXPLODE) goto fail;
> + if (s->err_recognition & AV_EF_EXPLODE) goto fail;
> avi->movi_list = avio_tell(pb) - 4;
> avi->movi_end = avio_size(pb);
> goto end_of_header;
> diff --git a/libavformat/options.c b/libavformat/options.c
> index a9e2c1c..0b6041b 100644
> --- a/libavformat/options.c
> +++ b/libavformat/options.c
> @@ -109,10 +109,12 @@ static const AVOption options[]={
> {"fdebug", "print specific debug info", OFFSET(debug), AV_OPT_TYPE_FLAGS,
> {.dbl = DEFAULT }, 0, INT_MAX, E|D, "fdebug"},
> {"ts", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_FDEBUG_TS }, INT_MIN, INT_MAX,
> E|D, "fdebug"},
> {"max_delay", "maximum muxing or demuxing delay in microseconds",
> OFFSET(max_delay), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, 0, INT_MAX, E|D},
> -{"fer", "set error detection aggressivity", OFFSET(error_recognition),
> AV_OPT_TYPE_INT, {.dbl = FF_ER_CAREFUL }, INT_MIN, INT_MAX, D, "fer"},
> -{"careful", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_ER_CAREFUL }, INT_MIN,
> INT_MAX, D, "fer"},
> -{"explode", "abort decoding on error recognition", 0, AV_OPT_TYPE_CONST,
> {.dbl = FF_ER_EXPLODE }, INT_MIN, INT_MAX, D, "fer"},
> {"fpsprobesize", "number of frames used to probe fps",
> OFFSET(fps_probe_size), AV_OPT_TYPE_INT, {.dbl = -1}, -1, INT_MAX-1, D},
> +{"f_err_detect", "set error detection flags", OFFSET(err_recognition),
> AV_OPT_TYPE_FLAGS, {.dbl = AV_EF_CRCCHECK }, INT_MIN, INT_MAX, D,
> "f_err_detect"},
> +{"crccheck", "verify embedded CRCs", 0, AV_OPT_TYPE_CONST, {.dbl =
> AV_EF_CRCCHECK }, INT_MIN, INT_MAX, D, "f_err_detect"},
> +{"bitstream", "detect bitstream specification deviations", 0,
> AV_OPT_TYPE_CONST, {.dbl = AV_EF_BITSTREAM }, INT_MIN, INT_MAX, D,
> "f_err_detect"},
> +{"buffer", "detect improper bitstream length", 0, AV_OPT_TYPE_CONST, {.dbl =
> AV_EF_BUFFER }, INT_MIN, INT_MAX, D, "f_err_detect"},
> +{"explode", "abort decoding on minor error detection", 0, AV_OPT_TYPE_CONST,
> {.dbl = AV_EF_EXPLODE }, INT_MIN, INT_MAX, D, "f_err_detect"},
> {NULL},
> };
Same here regarding preserving current API.
Thanks,
Justin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel