[FFmpeg-devel] [PATCH] avformat/movenc: correct loci parameter handling

Gyan Doshi ffmpeg at gyani.pro
Sat Apr 1 07:12:28 EEST 2023


Plan to push in 48h.

On 2023-03-26 01:11 pm, Gyan Doshi wrote:
> 3GPP TS 26.244 Table 8.10 specifies that longitude is written before
> latitude. The MOV demuxer already expects the correct order. So, write
> them in that order.
>
> However, the user supplied string may also be used in MOV mode which
> requires ISO 6709 format which specifies latitude first. The demuxer
> also exports the loci value in that format. So parser adjusted as well.
> ---
>   libavformat/movenc.c | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/libavformat/movenc.c b/libavformat/movenc.c
> index 68e7f8222b..c370922c7d 100644
> --- a/libavformat/movenc.c
> +++ b/libavformat/movenc.c
> @@ -4021,13 +4021,13 @@ static int mov_write_loci_tag(AVFormatContext *s, AVIOContext *pb)
>           return 0;
>   
>       ptr = t->value;
> -    longitude = strtod(ptr, &end);
> +    latitude = strtod(ptr, &end);
>       if (end == ptr) {
>           av_log(s, AV_LOG_WARNING, "malformed location metadata\n");
>           return 0;
>       }
>       ptr = end;
> -    latitude = strtod(ptr, &end);
> +    longitude = strtod(ptr, &end);
>       if (end == ptr) {
>           av_log(s, AV_LOG_WARNING, "malformed location metadata\n");
>           return 0;
> @@ -4048,8 +4048,8 @@ static int mov_write_loci_tag(AVFormatContext *s, AVIOContext *pb)
>       avio_wb16(pb, lang);
>       avio_write(pb, place, strlen(place) + 1);
>       avio_w8(pb, 0);           /* role of place (0 == shooting location, 1 == real location, 2 == fictional location) */
> -    avio_wb32(pb, latitude_fix);
>       avio_wb32(pb, longitude_fix);
> +    avio_wb32(pb, latitude_fix);
>       avio_wb32(pb, altitude_fix);
>       avio_write(pb, astronomical_body, strlen(astronomical_body) + 1);
>       avio_w8(pb, 0);           /* additional notes, null terminated string */



More information about the ffmpeg-devel mailing list