Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mpeg: prevent some cases where a valid mpeg stream was being flagged as invalid. #13442

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

aliaspider
Copy link
Contributor

this avoids spamming the console with the sceMpegRingbufferPut(): invalid mpeg data error, for example during the intro video of Mega Man Powered Up

@unknownbrackets
Copy link
Collaborator

Well, the problem is that we can't send the data early or it will break some games. See #8803. How will this make it still return ERROR_MPEG_INVALID_VALUE to the game in the corerct cases?

Perhaps we should remove or lessen the logging, but I'm pretty sure this change will make the tests of invalid mpeg data fail again. We shouldn't be altering behavior and deviating from what games expect just to reduce logging. Games actually do check error codes and misbehave when they are incorrectly told failures are successful.

-[Unknown]

@aliaspider
Copy link
Contributor Author

well it isn't really just about the logging but about the flag being incorrectly set.
all the other cases in that switch that break with needMore = true do set looksValid to true, it looked to me like it was just missing from the first test.
the stream is read in 2048 byte chunks, and there is no way a valid ERROR_MPEG_INVALID_VALUE would be bypassed with this change.

@aliaspider
Copy link
Contributor Author

actually, just tested Mega Man Powered Up again, and without this change, the very first video breaks a few seconds before it has finished playing, and you only hear CAP.. instead of CAPCOM .
so it definitely was behaving wrong before, which is what I meant anyway when I mentioned the log.

@hrydgard
Copy link
Owner

Logically, looking at the code, this does not seem correct. It needs more data to tell whether the stream is valid.

Obviously there's some other higher level bug that this manages to paper over though in some cases like in Powered Up.

@sum2012
Copy link
Collaborator

sum2012 commented Nov 16, 2020

@aliaspider can you test again "Mega Man Powered Up" ?
Mpeg 's code have been improved.

@hrydgard hrydgard added the PSMF / MPEG Issue involves scePsmf or sceMpeg video playback. label Nov 16, 2020
@hrydgard hrydgard added this to the v1.12.0 milestone Nov 16, 2020
@aliaspider
Copy link
Contributor Author

aliaspider commented Nov 16, 2020

@sum2012 yeah I was hoping the recent psmf/mpeg commits would maybe fix this issue too, but it appears to be unrelated sadly :/
just tested cf092eb and the cutoff at the end of the video is still there.

@sum2012
Copy link
Collaborator

sum2012 commented Nov 16, 2020

@shenweip do you interest to fix "Mega Man Powered Up"'s video (if you have the game)
(the very first video breaks a few seconds before it has finished playing, and you only hear CAP.. instead of CAPCOM) ?

@shenweip
Copy link
Contributor

Is there a log file about this?

@sum2012
Copy link
Collaborator

sum2012 commented Nov 24, 2020

v1.10.3-1245-g51b213e68-windows-amd64
I stop the log after CAPCOM disapear.
log:
https://gist.github.com/sum2012/319a8639dcc5f89cfa486f681433f859

@shenweip
Copy link
Contributor

04:29:777 W[ME]: hw\mpegdemux.cpp:272 MPEG user data found
This means that there is mepg user data outside the PES packet. This case seems uncommon.

@sum2012
Copy link
Collaborator

sum2012 commented Nov 25, 2020

Update log to v1.10.3-1257-g6bf9f20f5-windows-amd64
https://gist.github.com/sum2012/ef3b8cba4b1cb691e9f5720fe80dcf21

@sum2012
Copy link
Collaborator

sum2012 commented Dec 27, 2020

I try many many game.Only this game's mpegLibVersion = 260

edit:
266 God Eater
260 MEGA,Powerup
261 ULJS10160
258 UCJS10012
259 ULJM05109

@unknownbrackets
Copy link
Collaborator

sceMpeg 0x104 is used by the following games (and possibly others):

id_game title
LBGV10041_3.00 Grand Theft Auto 5 LBORELLIMODS
NPEG00023_1.00 God of War®: Chains of Olympus
NPHH00068_1.01 판타지 골프 팡야 포터블
NPJH50170_1.00 God of War: Chains of Olympus
NPJH90122_1.00 テイルズ オブ ファンタジア クロスエディション 体験版
NPUG80325_1.00 God of War: Chains of Olympus
NPUG80329_1.01 Daxter
NPUH10022_2.00 Dynasty Warriors® Vol. 2
NPUZ00005_01.01 Hero of Sparta™
UCAS40037_1.01 Bounty Hounds
UCAS40063_1.00 LocoRoco
UCAS40064_1.00 BladeDancer
UCAS40099_1.02 TEKKEN DARK RESURRECTION
UCAS40180_1.00 Coded Soul
UCAS40198_1.00 God of War: Chains of Olympus
UCAS40258_1.00 BLEACH HEAT・THE・SOUL 6
UCES00044_1.00 Daxter
UCES00113_1.00 Gangs of London™
UCES00206_1.01 World Tour Soccer 2
UCES00249_1.00 B-Boy™
UCES00254_1.01 TALKMAN
UCES00304_1.01 LocoRoco™
UCES00310_1.00 Syphon Filter™ Dark Mirror
UCES00356_1.00 TEKKEN DARK RESURRECTION
UCES00356_2.00 TEKKEN DARK RESURRECTION
UCES00842_0.01 God of War: Chains of Olympus
UCES00842_1.00 God of War: Chains of Olympus
UCES01496_2.01 Battle Royal
UCET00372_0.01 Isle of Minno
UCET00424_0.02 TEKKEN DARK RESURRECTION
UCET00844_0.01 God of War: Chains of Olympus
UCJB98011_1.01 LocoRoco
UCJS10034_1.03 TALKMAN EURO
UCJS10036_1.00 Kazuo(TM)
UCJS10038_1.00 ぼくのなつやすみ ポータブル
UCJS10041_1.01 LocoRoco
UCJS10042_1.00 BLEACH ヒート・ザ・ソウル3
UCJS10044_1.00 BLOOD+ ~ファイナルピース~
UCJS10057_2.00 BLEACH ヒート・ザ・ソウル4
UCJS10061_1.00 Coded Soul
UCJS10082_1.01 BLEACH ヒート・ザ・ソウル5
UCJS10093_1.01 BLEACH ヒート・ザ・ソウル6
UCKS45018_1.00 CARS
UCKS45019_1.00 Beit Hell 2000
UCKS45020_1.00 LocoRoco
UCKS45021_1.00 SOCOM: U.S. Navy SEALs Fireteam Bravo
UCKS45022_1.00 아바마마 오셨다! 어서 굴려라!
UCKS45024_1.00 PIPOSARU ACADEMIA 2
UCKS45025_1.00 Daxter
UCKS45027_1.02 TEKKEN DARK RESURRECTION
UCKS45036_1.00 MONSTER HUNTER FREEDOM
UCKS45071_1.00 Coded Soul
UCKS45084_1.00 God of War: Chains of Olympus
UCUS98618_1.00 Daxter
UCUS98631_1.00 World Tour Soccer '06
UCUS98641_1.01 Syphon Filter®: Dark Mirror
UCUS98647_1.01 LEMMINGS™
UCUS98653_1.00 God of War: Chains of Olympus
UCUS98662_1.00 LocoRoco™
UCUS98681_1.00 ATV Offroad Fury® Pro Demo
UCUS98684_0.10 Ratchet PSP SAD
UCUS98705_1.01 God of War(R): Chains of Olympus Special Edition Demo
UCUS98713_1.00 God of War(R): Chains of Olympus Demo
UCUS98737_2.00 God of War®: Ghost of Sparta
ULAS42050_1.00 ロックマンロックマン
ULAS42053_1.00 Capcom Classics Collection Remixed
ULAS42054_1.00 The Godfather™ Mob Wars
ULAS42060_1.00 MONSTER HUNTER FREEDOM
ULAS42073_1.00 Ultimate Ghosts'n Goblins
ULAS42095_1.01 BURNOUT DOMINATOR
ULAS42150_1.00 真・三國無雙 2nd Evolution
ULES00124_1.00 CODED ARMS
ULES00151_3.00 Grand Theft Auto: Liberty City Stories
ULES00182_2.00 Grand Theft Auto: Liberty City Stories
ULES00233_1.01 BUST A MOVE GHOST
ULES00256_1.00 Viewtiful Joe Red Hot Rumble
ULES00260_1.00 Pac-Man World 3
ULES00262_1.01 OUTRUN 2006: COAST 2 COAST
ULES00267_1.03 Ys –THE ARK OF NAPISHTIM-
ULES00275_1.02 Pocket Racers
ULES00280_1.01 SpongeBob SquarePants: The Yellow Avenger
ULES00281_1.02 SplinterCell
ULES00281_2.00 SplinterCell
ULES00283_1.01 Tomb Raider : Legend
ULES00284_1.01 METAL GEAR ACID 2
ULES00285_1.01 EXIT
ULES00291_1.01 POPOLOCROIS
ULES00296_1.01 World Poker Tour
ULES00297_1.00 SAMURAI WARRIORS: State of War
ULES00298_1.00 SAMURAI WARRIORS: State of War
ULES00299_1.00 SAMURAI WARRIORS: State of War
ULES00303_1.01 BUBBLE BOBBLE EVOLUTION
ULES00307_1.00 Mega Man Powered Up
ULES00318_1.01 MONSTER HUNTER FREEDOM(TM)
ULES00319_1.01 CARS
ULES00320_1.01 CARROS
ULES00321_1.01 CARS
ULES00322_1.01 CARS
ULES00323_1.00 CARS
ULES00324_1.01 CARS
ULES00325_1.00 CARS
ULES00326_1.01 CARS
ULES00327_1.00 BILAR
ULES00335_1.01 Field Commander™
ULES00337_1.01 INFECTED
ULES00338_1.01 INFECTED
ULES00339_1.00 Me & My Katamari
ULES00340_1.02 2006 FIFA World Cup™
ULES00341_1.02 2006 FIFA World Cup™
ULES00342_1.02 2006 FIFA World Cup™
ULES00343_1.02 2006 FIFA World Cup™
ULES00344_1.02 2006 FIFA World Cup™
ULES00347_1.01 Capcom Classics Collection Remixed
ULES00358_1.01 PQ
ULES00363_1.01 ASTONISHIA STORY
ULES00366_1.01 Pirates of the Caribbean: Dead Man's Chest
ULES00368_1.01 MicroMachines V4
ULES00369_1.01 Kameleon
ULES00377_1.01 CAPCOM CLASSICS COLLECTION RELOADED
ULES00379_1.01 Juiced: Eliminator
ULES00382_1.01 METAL GEAR SOLID DIGITAL GRAPHIC NOVEL
ULES00388_1.01 Carol Vorderman's Sudoku
ULES00389_1.01 Carol Vorderman's Sudoku
ULES00390_1.00 Def Jam® Fight For NY™: The Takeover
ULES00394_1.00 The Godfather®
ULES00397_1.00 le Parrain®
ULES00398_1.00 Der Pate®
ULES00399_1.00 il Padrino®
ULES00400_1.00 El Padrino®
ULES00419_1.00 Ultimate Ghosts'n Goblins
ULES00437_1.02 Rengoku 2
ULES00451_1.03 50 Cent® Bulletproof G Unit Edition
ULES00452_1.01 50 Cent® Bulletproof G Unit Edition
ULES00457_1.01 NASCAR®
ULES00574_1.02 GUILTY GEAR JUDGMENT
ULES00604_1.00 DYNASTY WARRIORS Vol.2
ULES00605_1.00 DYNASTY WARRIORS Vol.2
ULES00606_1.00 DYNASTY WARRIORS Vol.2
ULES00658_1.02 Innocent Life
ULES00670_1.01 Rocky Balboa
ULES00693_1.02 Spinout
ULES00703_1.01 Burnout™ Dominator
ULES00750_1.01 BURNOUT DOMINATOR
ULES00792_1.00 Beta BLOC
ULES00798_1.03 THC Great Battles Of Rome
ULES00821_1.02 World of Pool
ULES00880_1.02 Pro Evolution Soccer 2008
ULES00983_1.01 Telly Addicts
ULES01219_1.01 Real Madrid
ULES01543_1.00 FIFA 12
ULES01595_1.01 PES 2014
ULJM05022_1.02 信長の野望 烈風伝 WPK
ULJM05034_1.02 ボンバーマン ポータブル
ULJM05044_1.01 ロックマンロックマン
ULJM05055_1.02 煉獄弐 - The Stairway to H.E.A.V.E.N.
ULJM05086_1.03 幻想水滸伝Ⅰ&Ⅱ
ULJM05086_2.00 幻想水滸伝Ⅰ&Ⅱ
ULJM05094_1.03 Myst
ULJM05095_1.05 Winning Post 6 2006
ULJM05096_1.03 大航海時代Ⅳ~ROTA NOVA~
ULJM05104_1.01 カプコン クラシックス コレクション
ULJM05106_1.02 天外魔境 第四の黙示録
ULJM05110_2.00 かまいたちの夜2 特別篇
ULJM05111_1.01 街 ~運命の交差点~ 特別篇
ULJM05112_1.02 実戦パチスロ必勝法! アラジン2エボリューション ポータブル
ULJM05113_1.00 真・三國無双 2nd Evolution
ULJM05116_1.03 ULTRA PUZZLE BOBBLE POCKET
ULJM05120_1.00 電車でGO!POCKET 大阪環状線編
ULJM05121_1.05 BUBBLE BOBBLE MAGICAL TOWER
ULJM05122_1.02 THE DOG HAPPY LIFE ~幸せワンコ生活第1弾~
ULJM05123_1.01 ぐるみん
ULJM05124_1.03 イーディスメモリーズ ~新天魔界 ジェネレーションオブカオスⅤ~
ULJM05127_1.02 ドラゴンクエスト&ファイナルファンタジー in いただきストリート ポータブル
ULJM05133_1.02 2006 FIFA World Cup™
ULJM05136_1.02 Jan Sangoku Musou
ULJM05137_1.01 リサと一緒に大陸横断 ~A列車で行こう~
ULJM05142_1.00 NANA すべては大魔王のお導き!?
ULJM05143_1.02 FINDER LOVE 原史奈
ULJM05144_1.01 FINDER LOVE 工藤里紗
ULJM05145_1.01 FINDER LOVE ほしのあき
ULJM05147_1.01 極魔界村
ULJM05149_1.01 カーズ
ULJM05150_1.03 METAL GEAR SOLID BD
ULJM05152_1.00 電車でGO!POCKET 東海道線編
ULJM05153_1.01 実戦パチスロ必勝法! 北斗の拳SE ポータブル
ULJM05155_1.03 Ys -THE ARK OF NAPISHTIM- SPECIAL VERSION
ULJM05158_1.04 GUILTY GEAR JUDGMENT
ULJM05159_1.02 太閤立志伝IV
ULJM05169_1.01 プリンセスメーカー4 ポータブル
ULJM05176_1.02 Astonishia Story
ULJM05180_1.01 トゥームレイダー:レジェンド
ULJM05242_1.00 BURNOUT DOMINATOR
ULJM05244_1.01 ちゅ〜かな雀士 てんほー牌娘 Remix
ULJM05348_1.01 ゴッド・オブ・ウォー 落日の悲愴曲
ULJM05440_1.01 ファンタジーゴルフパンヤポータブル
ULJM95002_1.01 THE DOG HAPPY LIFE ~幸せワンコ生活第1弾~ McDonald's Ver.
ULJS00021_1.02 Bounty Hounds
ULJS00031_1.02 ポータブル・アイランド 手のひらのリゾート
ULJS00038_1.05 THEテニス
ULJS00039_1.01 THE右脳ドリル
ULJS00045_1.03 ダービースタリオンP
ULJS00048_1.06 鉄拳 DARK RESURRECTION
ULJS00050_1.02 ビズ体験シリーズ 起業道
ULJS00055_1.01 ナルティメットポータブル 無幻城の巻
ULJS00057_1.04 THEブロックくずしクエスト
ULJS00058_1.00 SIMPLE2500シリーズ ポータブル!! VOL.6 THE 戦車
ULJS00060_1.02 大都技研公式パチスロシミュレーター 吉宗 PORTABLE
ULJS00062_1.01 舞-HiME 鮮烈!真 風華学園激闘史!!
ULJS00063_1.02 イノセントライフ
ULJS00065_1.02 SDガンダム GGENERATION-PORTABLE
ULJS00070_1.02 KING'S FIELD ADDITIONAL Ⅰ
ULJS00071_1.03 パイレーツ オブ カリビアン: デッドマンズ チェスト
ULJS00074_1.01 クイズ機動戦士ガンダム問戦士DX
ULJS00075_1.03 VALHALLAKNIGHTS
ULJS00076_1.01 KING'S FIELD ADDITIONAL Ⅱ
ULJS00077_1.00 SIMPLE2500シリーズ ポータブル!! VOL.7 THE どこでも漢字クイズ
ULJS00078_1.02 MotoGP
ULJS00079_1.02 TALES OF PHANTASIA
ULJS00119_1.01 イノセントライフ
ULJS00293_1.01 テイルズ オブ ファンタジア なりきりダンジョンX
ULKS46049_1.00 Def Jam® Fight For NY™: The Takeover
ULKS46065_1.02 METAL GEAR ACID 2
ULKS46084_1.01 Dynasty Warriors 2nd Evolution
ULKS46088_1.01 2006 FIFA World Cup™
ULKS46090_1.03 Just English
ULKS46164_1.03 판타지 골프 팡야 포터블
ULUS10021_2.02 Midnight Club 3: Dub Edition
ULUS10041_3.00 GTA: Liberty City Stories
ULUS10057_1.00 BUST A MOVE DELUXE
ULUS10064_1.03 OUTRUN 2006: COAST 2 COAST
ULUS10070_1.02 Tom Clancy's Splinter Cell® Essentials
ULUS10073_1.02 CARS
ULUS10077_1.00 Metal Gear AC!D 2
ULUS10079_1.06 World Poker Tour
ULUS10081_1.02 Dragon Ball Z Shin Budokai
ULUS10082_1.01 2006 FIFA World Cup™
ULUS10083_1.02 ASTONISHIA STORY
ULUS10084_1.00 MONSTER HUNTER FREEDOM
ULUS10085_1.01 Kao Challengers
ULUS10087_1.00 Viewtiful Joe Red Hot Rumble
ULUS10088_1.00 Field Commander™
ULUS10089_1.01 Samurai Warriors®: State of War
ULUS10090_1.00 Juiced: Eliminator
ULUS10091_1.00 Mega Man Powered Up
ULUS10092_1.01 SpongeBob SquarePants: The Yellow Avenger
ULUS10093_1.01 WRC
ULUS10094_1.00 Me & My Katamari
ULUS10096_1.01 Race Driver 2006
ULUS10097_1.00 Capcom® Classics Collection Remixed
ULUS10098_1.00 The Godfather™ Mob Wars
ULUS10100_1.01 Def Jam® Fight For NY™: The Takeover
ULUS10104_1.01 GUILTY GEAR JUDGMENT
ULUS10105_1.00 Ultimate Ghosts'n Goblins
ULUS10106_1.01 DANGEROUS HUNTS
ULUS10107_1.00 VALKYRIE PROFILE -LENNETH-
ULUS10108_1.01 METAL GEAR SOLID DIGITAL GRAPHIC NOVEL
ULUS10110_1.02 Tomb Raider: Legend™
ULUS10111_1.01 Pirates of the Caribbean: Dead Man's Chest
ULUS10116_1.00 NCAA® FOOTBALL 07
ULUS10116_2.00 NCAA® FOOTBALL 07
ULUS10117_1.00 Madden NFL 07
ULUS10120_1.00 Puzzle Challenge: Crosswords and More!
ULUS10121_1.00 BOMBERMAN
ULUS10122_1.01 NASCAR®
ULUS10123_1.03 WARHAMMER
ULUS10124_1.01 BladeDancer
ULUS10125_1.00 The Legend of Heroes II: Prophecy of the Moonlight Witch
ULUS10126_1.01 Carol Vorderman's Sudoku
ULUS10127_1.02 RENGOKU II: The Stairway to H.E.A.V.E.N.
ULUS10128_1.02 50 Cent® Bulletproof G Unit Edition
ULUS10129_1.01 MicroMachines V4
ULUS10134_1.00 CAPCOM CLASSICS COLLECTION RELOADED
ULUS10137_1.00 Rapala Trophies
ULUS10138_1.00 MTX Mototrax
ULUS10139_1.00 TEKKEN DARK RESURRECTION
ULUS10143_1.01 Bubble Bobble EVOLUTION
ULUS10144_1.01 The Legend of Heroes III: Song of the Ocean
ULUS10170_1.00 DYNASTY WARRIORS Vol.2
ULUS10233_1.02 Rocky Balboa
ULUS10236_1.00 BURNOUT DOMINATOR
ULUS10255_1.00 Spelling Challenges And More!
ULUS10438_1.00 PANGYA : Fantasy Golf
ULUS10457_1.00 SOULCALIBUR: Broken Destiny
ULUS10466_1.00 TEKKEN 6
ULUS10518_1.00 NARUTO Shippuden: Ultimate Ninja Heroes 3

-[Unknown]

@sum2012
Copy link
Collaborator

sum2012 commented Dec 27, 2020

Very thanks @unknownbrackets

@shenweip
Copy link
Contributor

shenweip commented Dec 27, 2020

When invalid data is detected, I wonder if we can keep the previous data and just reject the later data to reduce data loss.

@sum2012
Copy link
Collaborator

sum2012 commented Dec 28, 2020

Update log to v1.10.3-1402-g8bc1f3ee9-windows-amd64
https://gist.github.com/sum2012/cca9998355b3ddc9af71a5725245d3fb

@shenweip you can ask me do some mpeg JPCSPTrace log

@hrydgard hrydgard modified the milestones: v1.12.0, Future-Prio Sep 11, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
PSMF / MPEG Issue involves scePsmf or sceMpeg video playback.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants