[FFmpeg-devel] [PATCH 1/2] avformat/microdvd: skip BOM properly
Clément Bœsch
u at pkh.me
Mon Mar 3 23:37:39 CET 2014
On Sun, Mar 02, 2014 at 10:36:41PM +0100, wm4 wrote:
> The BOM is already skipped in the probe function, but not the header
> read function. This could cause the header to be misparsed, such as
> not interpreting the FPS line.
> ---
> libavformat/microdvddec.c | 13 ++++++++++---
> 1 file changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/libavformat/microdvddec.c b/libavformat/microdvddec.c
> index 7b49e43..42c6de0 100644
> --- a/libavformat/microdvddec.c
> +++ b/libavformat/microdvddec.c
> @@ -71,22 +71,29 @@ static int get_duration(const char *buf)
> return -1;
> }
>
> +static const char *bom = "\xEF\xBB\xBF";
> +
> static int microdvd_read_header(AVFormatContext *s)
> {
> AVRational pts_info = (AVRational){ 2997, 125 }; /* default: 23.976 fps */
> MicroDVDContext *microdvd = s->priv_data;
> AVStream *st = avformat_new_stream(s, NULL);
> int i = 0;
> - char line[MAX_LINESIZE];
> + char line_buf[MAX_LINESIZE];
>
> if (!st)
> return AVERROR(ENOMEM);
>
> while (!url_feof(s->pb)) {
> - char *p = line;
> + char *p;
> AVPacket *sub;
> int64_t pos = avio_tell(s->pb);
> - int len = ff_get_line(s->pb, line, sizeof(line));
> + int len = ff_get_line(s->pb, line_buf, sizeof(line_buf));
> + char *line = line_buf;
> +
> + if (!strncmp(line, bom, 3))
> + line += 3;
> + p = line;
>
> if (!len)
> break;
Applied, thanks.
--
Clément B.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20140303/6431fedb/attachment.asc>
More information about the ffmpeg-devel
mailing list