Commit Graph

192 Commits

Author SHA1 Message Date
Unknown W. Brackets f6534c3809 Fix a possible buffer over/underflow issue in mpeg.
Atrac seems to have a problem here, so let's be safe.
2013-06-14 23:21:12 -07:00
Unknown W. Brackets 9406561492 The seek callback should return new offset.
Like lseek().  Not the passed param.
2013-06-14 23:12:56 -07:00
Unknown W. Brackets 2ec8106809 Ensure FFmpeg doesn't corrupt an early keyframe.
When the analyze func runs, it seems to check between 2-4% (or so?) of the
stream, which for longer videos especially we don't have yet.  Returning a
read failure here seems to truncate that keyframe sometimes.

FFmpeg asks for the total size when this happens, which we were ignoring.
Handling it fixes this, as FFmpeg apparently realizes we ran out of data.
2013-06-14 17:56:27 -07:00
oioitff 23cefa03c6 Delay video decode until we have enough packets. 2013-06-14 01:16:59 -07:00
Unknown W. Brackets 6192feb27a Don't return less than ffmpeg wants 'til the end.
Fixes #2223 (at least for the games I have.)
2013-06-14 01:14:40 -07:00
Sacha 5aba914a42 Build fix for non-ffmpeg and non-gcc non-++11. 2013-06-12 10:51:30 +10:00
Henrik Rydgård 6b84743082 Merge pull request #2217 from oioitff/mpeg-fix
Add support for multiple video/audio stream.
2013-06-11 07:42:19 -07:00
oioitff 77a17cacc5 Add support for multiple video/audio stream. 2013-06-11 19:04:14 +08:00
Unknown W. Brackets 2ce4cd245f Allow a video end a couple packets from end.
Fixes #2206, Patapon 3.  Possibly we don't even need this check at all,
but I'm not sure.
2013-06-10 23:18:36 -07:00
oioitff 32fb534375 Improve mpeg timestamp.
Read 6 bytes timestamp instead.
2013-06-10 04:21:36 +08:00
Sacha 29d1e40c79 Buildfix for Blackberry, Linux, Symbian, non-ffmpeg platforms, Meego, ... 2013-06-09 22:53:22 +10:00
Henrik Rydgard 04d24012e1 Prevent crashing the emu in stepVideo when things have gone very wrong. 2013-06-09 13:45:48 +02:00
Unknown W. Brackets 14034fd9c1 PSP can decode directly to vram, so detect that.
Not sure if any games do this but I did it in a test.
2013-06-08 04:52:37 -07:00
Unknown W. Brackets 4de27773d2 Detect audio end separately from video end.
Fixes Crisis Core, broken by Wipeout Pure fix.
2013-06-08 03:00:50 -07:00
Unknown W. Brackets be7fd47fc2 Calculate packets left based on decode, not read.
This seems to be more correct.  Fixes #2039.
2013-06-08 03:00:49 -07:00
Unknown W. Brackets 073282217c Cut down on void *'s for easier debugging.
Nice to be able to see inside structs with the debugger.
2013-06-08 03:00:49 -07:00
Unknown W. Brackets 36eb90293e Don't use m_pFrame->pkt_duration directly.
Docs say you're supposed to call this func instead.
2013-06-08 03:00:48 -07:00
Unknown W. Brackets 6f9a879aad Set video end only when we run out of frames. 2013-06-08 03:00:48 -07:00
Unknown W. Brackets b04b601958 Make sure to decode reordered mpeg frames. 2013-06-08 03:00:48 -07:00
Unknown W. Brackets 17907b204b Return a more accurate mpeg ringbuffer decode pos. 2013-06-08 03:00:46 -07:00
oioitff 49ecb1bdc0 Add support for mono CG audios. 2013-06-07 17:14:26 +08:00
oioitff 156c4ca78a Fix crash for invalid mpeg header. 2013-06-05 15:46:04 +08:00
oioitff a3788162c5 Add ffmpeg logs for MediaEngine in debug mode 2013-06-05 00:27:22 +08:00
oioitff c913f92427 More improvement for mpeg pts.
The mpeglastTimeStamp is probably wrong in some videos. So a video is
end only if there is no more data for decoding.
2013-06-04 23:03:09 +08:00
oioitff a9ba797ce5 Improve mpeg pts.
A real PSP return a value start from 0.
2013-06-03 17:00:58 +08:00
Unknown W. Brackets 3d5f818095 Add a bounds check to writeVideoImageWithRange().
Fixes crash in Jeanne d' Arc, which sends 480x480.
2013-06-02 11:40:38 -07:00
Sacha aa67301618 Buildfix for non-ffmpeg platforms. 2013-06-02 20:05:40 +10:00
Unknown W. Brackets 777bcc36b2 Android/etc. buildfix.
I keep thinking enums can be forward declared... and MSVC allows it.
2013-06-02 02:46:16 -07:00
Unknown W. Brackets d69da21189 Also convert directly inside sceMpegAvcCsc().
Erp, needed this too, what was I thinking?
2013-06-02 01:47:55 -07:00
Unknown W. Brackets 8dfeeee4a1 Handle 16-bit video conversion correctly.
Still directly converting, turns out colors are swapped and linesize needs
adjustment.  Oops.
2013-06-02 01:37:16 -07:00
Unknown W. Brackets b32a52f35c Convert videos directly to the desired format.
This still converts at least in some cases, but less.  But these seem
backwards, why are the BGR formats converting to RGB?
2013-06-02 00:31:16 -07:00
Unknown W. Brackets 3d1e426e4a Send games a free packet count that makes sense. 2013-06-01 15:33:47 -07:00
Henrik Rydgard 230d0b3679 Buildfixes 2013-06-01 23:37:51 +02:00
oioitff e099b8d954 Rewrite and implement MediaEngine. 2013-06-02 01:29:22 +08:00
Unknown W. Brackets 3931f07852 Fix a couple bad bounds checks in VAG/Mpeg. 2013-05-18 10:19:12 -07:00
raven02 2b89ccfa50 Use Dark Grey to identify CG is running instead of black 2013-04-28 10:43:31 +08:00
Unknown W. Brackets 4974124587 Fix some small constant-comparison type warnings. 2013-04-05 20:58:35 -07:00
raven02 c7d2626bca Set fake image to black 2013-03-18 19:28:10 +08:00
Unknown W. Brackets 74f3b81846 Check for a null pointer when writing video. 2013-01-28 02:16:06 -08:00
Unknown W. Brackets 3464fd6b00 Fix crash with unitialized var in mpeg code. 2012-12-24 11:56:51 -08:00
Henrik Rydgard 8053c244b8 Implement large chunks of sceMpeg and scePsmf with JPSCP as a guide.
Not yet hooked up to FFMPEG and doesn't quite work yet.
2012-11-13 18:07:20 +01:00
Henrik Rydgard 1127c72124 some initial mediaengine work 2012-11-12 20:53:16 +01:00