diff mbox series

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

Message ID 20230326074130.1317-1-ffmpeg@gyani.pro
State Accepted
Commit 6941788d24ea350498ecb327e03d625974e55d9f
Headers show
Series [FFmpeg-devel] avformat/movenc: correct loci parameter handling | expand

Checks

Context Check Description
andriy/make_x86 success Make finished
andriy/make_fate_x86 fail Make fate failed

Commit Message

Gyan Doshi March 26, 2023, 7:41 a.m. UTC
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(-)

Comments

Gyan Doshi April 1, 2023, 4:12 a.m. UTC | #1
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 */
Gyan Doshi April 3, 2023, 9:32 a.m. UTC | #2
On 2023-04-01 09:42 am, Gyan Doshi wrote:
> Plan to push in 48h.

Pushed as 6941788d24ea350498ecb327e03d625974e55d9f
>
> 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 */
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
diff mbox series

Patch

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 */