[FFmpeg-devel] [PATCH 4/4] avformat/psxstr: basic FPS detection instead of fixed value

Michael Niedermayer michael at niedermayer.cc
Sun Jan 7 01:44:03 EET 2024


On Tue, Jan 02, 2024 at 03:14:19AM +0000, aybe aybe wrote:
> This fourth and last patch is an attempt at removing the hard-coded value of 15 FPS.
> 
> In patch 1/4, although it would render video, the audio and video were not synchronized at all, now there are.
> 
> In this approach I kept it simple, grab min/max possible rates, pick min, clamp to 15/30 just in case.
> 
> It appears to work quite well, the right frame rate is picked up and both streams are in sync.
> 
> (tested against Wipeout introduction for both PAL and NTSC versions).
> 
> 
> Besides, there have been significant findings over the years regarding that format, specifically:
> https://problemkaputt.de/psxspx-macroblock-decoder-mdec.htm
> https://github.com/m35/jpsxdec/blob/readme/jpsxdec/PlayStation1_STR_format.txt
> 
> Maybe someone versed in this topic (I'm not) could further improve support of this format according these docs...
> 
> 
> 
> Signed-off-by: aybe <aybe at users.noreply.github.com>
> ---
>   libavformat/psxstr.c | 27 +++++++++++++++++++++++++--
>   1 file changed, 25 insertions(+), 2 deletions(-)

The fate checksums change with the code change, they
need to be updated in this patch, if the changes are intended:

make -j32  fate-psx-str-demux

--- ./tests/ref/fate/psx-str-demux	2024-01-06 03:38:10.432133150 +0100
+++ tests/data/fate/psx-str-demux	2024-01-07 00:42:26.202312209 +0100
@@ -1,4 +1,4 @@
-#tb 0: 1/15
+#tb 0: 1/16
 #media_type 0: video
 #codec_id 0: mdec
 #dimensions 0: 320x240
@@ -19,8 +19,8 @@
 1,          4,          4,        1,     2304, 0x40a1b447
 0,          4,          4,        1,     9404, 0xe94dfd40
 1,          5,          5,        1,     2304, 0x150dae9f
-1,          6,          6,        1,     2304, 0xad16bc63
 0,          5,          5,        1,     9492, 0xf73f2541
+1,          6,          6,        1,     2304, 0xad16bc63
 1,          7,          7,        1,     2304, 0xe989b175
 0,          6,          6,        1,     9652, 0x243d53f8
 1,          8,          8,        1,     2304, 0x3c77cd39
@@ -28,183 +28,183 @@
 1,          9,          9,        1,     2304, 0x93f0c2ba
 0,          8,          8,        1,    10052, 0x7604247a
 1,         10,         10,        1,     2304, 0x6e2ad2d0
-1,         11,         11,        1,     2304, 0xf8eab90a
 0,          9,          9,        1,    10100, 0x077107fd
-1,         12,         12,        1,     2304, 0xc039bf0d
+1,         11,         11,        1,     2304, 0xf8eab90a
 0,         10,         10,        1,    10264, 0xae675eb6
-1,         13,         13,        1,     2304, 0x0900c7e8
+1,         12,         12,        1,     2304, 0xc039bf0d
 0,         11,         11,        1,    10464, 0x428f83ae
+1,         13,         13,        1,     2304, 0x0900c7e8
 1,         14,         14,        1,     2304, 0x9722d580
 0,         12,         12,        1,    10580, 0x1bdcd71b
 1,         15,         15,        1,     2304, 0x02eec8de
-1,         16,         16,        1,     2304, 0x4807a2b3
 0,         13,         13,        1,    10800, 0xde75213a
-1,         17,         17,        1,     2304, 0x4643be06
+1,         16,         16,        1,     2304, 0x4807a2b3
 0,         14,         14,        1,    11236, 0x9387cc8e
-1,         18,         18,        1,     2304, 0x5bd9d249
+1,         17,         17,        1,     2304, 0x4643be06
 0,         15,         15,        1,    11420, 0x3a7d321b
-1,         19,         19,        1,     2304, 0x4e33c2bc
+1,         18,         18,        1,     2304, 0x5bd9d249
 0,         16,         16,        1,    11632, 0x7edc9cdf
+1,         19,         19,        1,     2304, 0x4e33c2bc
+0,         17,         17,        1,    11936, 0xf0521017
 1,         20,         20,        1,     2304, 0x085ca51d
 1,         21,         21,        1,     2304, 0xa205b202
-0,         17,         17,        1,    11936, 0xf0521017
-1,         22,         22,        1,     2304, 0x71b9bcca
 0,         18,         18,        1,    11804, 0x53b22066
-1,         23,         23,        1,     2304, 0xcb769e5f
+1,         22,         22,        1,     2304, 0x71b9bcca
 0,         19,         19,        1,    11852, 0x9425fb21
-1,         24,         24,        1,     2304, 0x9322d85a
+1,         23,         23,        1,     2304, 0xcb769e5f
 0,         20,         20,        1,    12108, 0xc386941d
+1,         24,         24,        1,     2304, 0x9322d85a
+0,         21,         21,        1,    12796, 0x8b7e5dab
 1,         25,         25,        1,     2304, 0x7f13bf6e
+0,         22,         22,        1,    13316, 0x81235102
 1,         26,         26,        1,     2304, 0xd302a5cd
-0,         21,         21,        1,    12796, 0x8b7e5dab
+0,         23,         23,        1,    13724, 0xe5fc2bca
 1,         27,         27,        1,     2304, 0x7a7a9e30
-0,         22,         22,        1,    13316, 0x81235102
 1,         28,         28,        1,     2304, 0x6ffccfdd
-0,         23,         23,        1,    13724, 0xe5fc2bca
-1,         29,         29,        1,     2304, 0xae88bf7a
 0,         24,         24,        1,    14304, 0xa5b1f811
+1,         29,         29,        1,     2304, 0xae88bf7a
+0,         25,         25,        1,    15216, 0xf4996763
 1,         30,         30,        1,     2304, 0xf816c2f5
+0,         26,         26,        1,    16224, 0xe30b0679
 1,         31,         31,        1,     2304, 0xdb42a783
-0,         25,         25,        1,    15216, 0xf4996763
+0,         27,         27,        1,    10640, 0xaeb122c9
 1,         32,         32,        1,     2304, 0xfc55c021
-0,         26,         26,        1,    16224, 0xe30b0679
+0,         28,         28,        1,    11652, 0x087d18b1
 1,         33,         33,        1,     2304, 0x9da68fc1
-0,         27,         27,        1,    10640, 0xaeb122c9
+0,         29,         29,        1,    12008, 0x1eeeac41
 1,         34,         34,        1,     2304, 0x2f65bb0f
-0,         28,         28,        1,    11652, 0x087d18b1
 1,         35,         35,        1,     2304, 0x6e5da2c7
+0,         30,         30,        1,    12344, 0x488c64ec
 1,         36,         36,        1,     2304, 0xb0b0c5f8
-0,         29,         29,        1,    12008, 0x1eeeac41
+0,         31,         31,        1,    13004, 0x02a69339
 1,         37,         37,        1,     2304, 0x32559dc6
-0,         30,         30,        1,    12344, 0x488c64ec
+0,         32,         32,        1,    14092, 0x348a7d3f
 1,         38,         38,        1,     2304, 0x9168aed0
-0,         31,         31,        1,    13004, 0x02a69339
+0,         33,         33,        1,    15048, 0xa55ef200
 1,         39,         39,        1,     2304, 0x32069bce
-0,         32,         32,        1,    14092, 0x348a7d3f
+0,         34,         34,        1,    16100, 0xac17de5b
 1,         40,         40,        1,     2304, 0x763ca8e0
 1,         41,         41,        1,     2304, 0x70c7a44e
-0,         33,         33,        1,    15048, 0xa55ef200
+0,         35,         35,        1,    13180, 0x4d874f61
 1,         42,         42,        1,     2304, 0x7dc1b275
-0,         34,         34,        1,    16100, 0xac17de5b
+0,         36,         36,        1,    14592, 0x5f58f505
 1,         43,         43,        1,     2304, 0x2e26ceae
-0,         35,         35,        1,    13180, 0x4d874f61
+0,         37,         37,        1,    14372, 0x369bb5d9
 1,         44,         44,        1,     2304, 0xa071a7e2
-0,         36,         36,        1,    14592, 0x5f58f505
+0,         38,         38,        1,    16172, 0x513a97b6
 1,         45,         45,        1,     2304, 0xe434ad92
+0,         39,         39,        1,    15136, 0x7f9a3865
 1,         46,         46,        1,     2304, 0xb4469381
-0,         37,         37,        1,    14372, 0x369bb5d9
+0,         40,         40,        1,    16336, 0x1339ba5f
 1,         47,         47,        1,     2304, 0x3f20a7c5
-0,         38,         38,        1,    16172, 0x513a97b6
 1,         48,         48,        1,     2304, 0x68ef9ef9
-0,         39,         39,        1,    15136, 0x7f9a3865
+0,         41,         41,        1,    16944, 0x122f71b7
 1,         49,         49,        1,     2304, 0x32dbb3e2
-0,         40,         40,        1,    16336, 0x1339ba5f
+0,         42,         42,        1,    17536, 0x7461b152
 1,         50,         50,        1,     2304, 0xdd90c7c3
+0,         43,         43,        1,    13940, 0xf5278274
 1,         51,         51,        1,     2304, 0xd106adb5
-0,         41,         41,        1,    16944, 0x122f71b7
+0,         44,         44,        1,     8592, 0x4bb2eaea
 1,         52,         52,        1,     2304, 0x11dca8c4
-0,         42,         42,        1,    17536, 0x7461b152
+0,         45,         45,        1,     8584, 0x2ff1e3db
 1,         53,         53,        1,     2304, 0x646d98bc
-0,         43,         43,        1,    13940, 0xf5278274
+0,         46,         46,        1,     8548, 0xadfd01b4
 1,         54,         54,        1,     2304, 0x6f019e81
-0,         44,         44,        1,     8592, 0x4bb2eaea
 1,         55,         55,        1,     2304, 0xc872a896
+0,         47,         47,        1,     8548, 0x9e2ec85f
 1,         56,         56,        1,     2304, 0xc7d7a0bc
-0,         45,         45,        1,     8584, 0x2ff1e3db
+0,         48,         48,        1,     8540, 0x9e2ad166
 1,         57,         57,        1,     2304, 0x181b880a
-0,         46,         46,        1,     8548, 0xadfd01b4
+0,         49,         49,        1,     8524, 0x047bc406
 1,         58,         58,        1,     2304, 0x6486b158
-0,         47,         47,        1,     8548, 0x9e2ec85f
+0,         50,         50,        1,     8508, 0xd051ddbb
 1,         59,         59,        1,     2304, 0x26d5a3db
-0,         48,         48,        1,     8540, 0x9e2ad166
+0,         51,         51,        1,     8572, 0x40b5004c
 1,         60,         60,        1,     2304, 0x4ff89a4d
+0,         52,         52,        1,     8564, 0xb379db59
 1,         61,         61,        1,     2304, 0xc42e9552
-0,         49,         49,        1,     8524, 0x047bc406
 1,         62,         62,        1,     2304, 0x0dc1c346
-0,         50,         50,        1,     8508, 0xd051ddbb
+0,         53,         53,        1,     8592, 0x22d0bc35
 1,         63,         63,        1,     2304, 0x5e51b7a5
-0,         51,         51,        1,     8572, 0x40b5004c
+0,         54,         54,        1,     8656, 0xa58917d5
 1,         64,         64,        1,     2304, 0xbd49c142
-0,         52,         52,        1,     8564, 0xb379db59
+0,         55,         55,        1,     8616, 0xc9e4f431
 1,         65,         65,        1,     2304, 0x373da274
+0,         56,         56,        1,     8660, 0x7a90ffd1
 1,         66,         66,        1,     2304, 0xde97b1bb
-0,         53,         53,        1,     8592, 0x22d0bc35
+0,         57,         57,        1,     8636, 0xec8ce437
 1,         67,         67,        1,     2304, 0x9715bf29
-0,         54,         54,        1,     8656, 0xa58917d5
+0,         58,         58,        1,     8668, 0x8b73139f
 1,         68,         68,        1,     2304, 0xc341b4ef
-0,         55,         55,        1,     8616, 0xc9e4f431
 1,         69,         69,        1,     2304, 0xc610adc6
-0,         56,         56,        1,     8660, 0x7a90ffd1
+0,         59,         59,        1,     8640, 0x3ee30f9c
 1,         70,         70,        1,     2304, 0x67bba315
+0,         60,         60,        1,     8728, 0xdbe12a94
 1,         71,         71,        1,     2304, 0x949b9c16
-0,         57,         57,        1,     8636, 0xec8ce437
+0,         61,         61,        1,     8748, 0xc4132fd5
 1,         72,         72,        1,     2304, 0xc7c1a8ca
-0,         58,         58,        1,     8668, 0x8b73139f
+0,         62,         62,        1,     8720, 0x7ac9316a
 1,         73,         73,        1,     2304, 0x1929bc7e
-0,         59,         59,        1,     8640, 0x3ee30f9c
+0,         63,         63,        1,     8756, 0xf47d843d
 1,         74,         74,        1,     2304, 0x5fc97897
-0,         60,         60,        1,     8728, 0xdbe12a94
+0,         64,         64,        1,     8840, 0x82808e79
 1,         75,         75,        1,     2304, 0x272da8d3
 1,         76,         76,        1,     2304, 0x141e904d
-0,         61,         61,        1,     8748, 0xc4132fd5
+0,         65,         65,        1,     8908, 0x63568647
 1,         77,         77,        1,     2304, 0x9880b0ed
-0,         62,         62,        1,     8720, 0x7ac9316a
+0,         66,         66,        1,     8968, 0xbd26de31
 1,         78,         78,        1,     2304, 0x0438932a
-0,         63,         63,        1,     8756, 0xf47d843d
+0,         67,         67,        1,     9168, 0xe1cd43a3
 1,         79,         79,        1,     2304, 0x27069761
-0,         64,         64,        1,     8840, 0x82808e79
+0,         68,         68,        1,     9272, 0x0cc64c79
 1,         80,         80,        1,     2304, 0x0baba2b7
+0,         69,         69,        1,     9700, 0x5cd2be73
 1,         81,         81,        1,     2304, 0x4bc491af
-0,         65,         65,        1,     8908, 0x63568647
 1,         82,         82,        1,     2304, 0x72e18e82
-0,         66,         66,        1,     8968, 0xbd26de31
+0,         70,         70,        1,     9868, 0x9b1629ae
 1,         83,         83,        1,     2304, 0xf85d8a91
-0,         67,         67,        1,     9168, 0xe1cd43a3
+0,         71,         71,        1,    10264, 0xa13cb7db
 1,         84,         84,        1,     2304, 0x653582e3
-0,         68,         68,        1,     9272, 0x0cc64c79
+0,         72,         72,        1,    10908, 0xe995858e
 1,         85,         85,        1,     2304, 0x6b5e8084
+0,         73,         73,        1,    11272, 0xebea53f6
 1,         86,         86,        1,     2304, 0x8cc27d10
-0,         69,         69,        1,     9700, 0x5cd2be73
+0,         74,         74,        1,    12128, 0xdfa8b7aa
 1,         87,         87,        1,     2304, 0xcf8f9e1d
-0,         70,         70,        1,     9868, 0x9b1629ae
+0,         75,         75,        1,    12560, 0x46048576
 1,         88,         88,        1,     2304, 0xecbe89df
-0,         71,         71,        1,    10264, 0xa13cb7db
 1,         89,         89,        1,     2304, 0xa433753d
-0,         72,         72,        1,    10908, 0xe995858e
+0,         76,         76,        1,    12900, 0x5b3aeb76
 1,         90,         90,        1,     2304, 0xe386afe9
+0,         77,         77,        1,    13544, 0x0f98fb94
 1,         91,         91,        1,     2304, 0x90409771
-0,         73,         73,        1,    11272, 0xebea53f6
+0,         78,         78,        1,    13968, 0x7c17c4c2
 1,         92,         92,        1,     2304, 0x29c88ae5
-0,         74,         74,        1,    12128, 0xdfa8b7aa
+0,         79,         79,        1,    15020, 0xe8faa930
 1,         93,         93,        1,     2304, 0x900b9e6a
-0,         75,         75,        1,    12560, 0x46048576
+0,         80,         80,        1,    16152, 0x3f004f78
 1,         94,         94,        1,     2304, 0x958cbb49
-0,         76,         76,        1,    12900, 0x5b3aeb76
+0,         81,         81,        1,    17224, 0x103f3935
 1,         95,         95,        1,     2304, 0xf83da537
 1,         96,         96,        1,     2304, 0x5fad9e5f
-0,         77,         77,        1,    13544, 0x0f98fb94
+0,         82,         82,        1,    11956, 0x7af9354a
 1,         97,         97,        1,     2304, 0xae15902a
-0,         78,         78,        1,    13968, 0x7c17c4c2
+0,         83,         83,        1,    12644, 0xe113a4b2
 1,         98,         98,        1,     2304, 0xf2a8b9d8
-0,         79,         79,        1,    15020, 0xe8faa930
+0,         84,         84,        1,    13420, 0xdf3ec8a4
 1,         99,         99,        1,     2304, 0x7bc99f71
-0,         80,         80,        1,    16152, 0x3f004f78
+0,         85,         85,        1,    14140, 0x0ad8a165
 1,        100,        100,        1,     2304, 0x3f199672
+0,         86,         86,        1,    15192, 0xc55f45cd
 1,        101,        101,        1,     2304, 0x4e258c38
-0,         81,         81,        1,    17224, 0x103f3935
+0,         87,         87,        1,    12740, 0xa13c85db
 1,        102,        102,        1,     2304, 0x5119b909
-0,         82,         82,        1,    11956, 0x7af9354a
 1,        103,        103,        1,     2304, 0xad57a533
-0,         83,         83,        1,    12644, 0xe113a4b2
+0,         88,         88,        1,    14416, 0x9e68b57d
 1,        104,        104,        1,     2304, 0xe40eb453
-0,         84,         84,        1,    13420, 0xdf3ec8a4
 1,        105,        105,        1,     2304, 0x502cc37e
 1,        106,        106,        1,     2304, 0x5b7bae9a
-0,         85,         85,        1,    14140, 0x0ad8a165
 1,        107,        107,        1,     2304, 0x0458a92d
-0,         86,         86,        1,    15192, 0xc55f45cd
 1,        108,        108,        1,     2304, 0x1529aba8
-0,         87,         87,        1,    12740, 0xa13c85db
 1,        109,        109,        1,     2304, 0x1a52a9d1
-0,         88,         88,        1,    14416, 0x9e68b57d
 1,        110,        110,        1,     2304, 0x76a2a7c9
Test psx-str-demux failed. Look at tests/data/fate/psx-str-demux.err for details.
tests/Makefile:312: recipe for target 'fate-psx-str-demux' failed
make: *** [fate-psx-str-demux] Error 1


[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

It is dangerous to be right in matters on which the established authorities
are wrong. -- Voltaire
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20240107/6a0d4003/attachment.sig>


More information about the ffmpeg-devel mailing list