mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-29 10:38:27 +00:00
ext/ffmpeg/gstffmpegdec.c: Don´t SIGFPE right away.
Original commit message from CVS: * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_frame): Don´t SIGFPE right away.
This commit is contained in:
parent
d40aa0a0df
commit
385671eb80
2 changed files with 35 additions and 11 deletions
15
ChangeLog
15
ChangeLog
|
@ -1,3 +1,18 @@
|
|||
2005-02-01 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
|
||||
|
||||
* ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_frame):
|
||||
Don´t SIGFPE right away.
|
||||
|
||||
2005-02-01 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
|
||||
|
||||
reviewed by: <delete if not using a buddy>
|
||||
|
||||
* ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_lowres_get_type),
|
||||
(gst_ffmpegdec_skipframe_get_type), (gst_ffmpegdec_class_init),
|
||||
(gst_ffmpegdec_init), (gst_ffmpegdec_connect),
|
||||
(gst_ffmpegdec_frame), (gst_ffmpegdec_set_property),
|
||||
(gst_ffmpegdec_get_property):
|
||||
|
||||
2005-01-31 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
|
||||
|
||||
* ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_lowres_get_type),
|
||||
|
|
|
@ -660,26 +660,35 @@ gst_ffmpegdec_frame (GstFFMpegDec * ffmpegdec,
|
|||
* For B-frame containing movies, we get all pictures delayed
|
||||
* except for the I frames, so we synchronize only on I frames
|
||||
* and keep an internal counter based on FPS for the others. */
|
||||
if (ffmpegdec->picture->pict_type == FF_I_TYPE &&
|
||||
GST_CLOCK_TIME_IS_VALID (*in_ts) &&
|
||||
ffmpegdec->context->frame_rate > 0) {
|
||||
if ((ffmpegdec->picture->pict_type == FF_I_TYPE ||
|
||||
!GST_CLOCK_TIME_IS_VALID (ffmpegdec->next_ts)) &&
|
||||
GST_CLOCK_TIME_IS_VALID (*in_ts)) {
|
||||
ffmpegdec->next_ts = *in_ts;
|
||||
}
|
||||
GST_BUFFER_TIMESTAMP (outbuf) = ffmpegdec->next_ts;
|
||||
GST_BUFFER_DURATION (outbuf) = GST_SECOND *
|
||||
ffmpegdec->context->frame_rate_base /
|
||||
ffmpegdec->context->frame_rate;
|
||||
ffmpegdec->next_ts += GST_BUFFER_DURATION (outbuf);
|
||||
if (ffmpegdec->context->frame_rate_base != 0 &&
|
||||
ffmpegdec->context->frame_rate != 0) {
|
||||
GST_BUFFER_DURATION (outbuf) = GST_SECOND *
|
||||
ffmpegdec->context->frame_rate_base /
|
||||
ffmpegdec->context->frame_rate;
|
||||
ffmpegdec->next_ts += GST_BUFFER_DURATION (outbuf);
|
||||
} else {
|
||||
ffmpegdec->next_ts = GST_CLOCK_TIME_NONE;
|
||||
}
|
||||
} else if (ffmpegdec->picture->pict_type != -1) {
|
||||
/* update time for skip-frame */
|
||||
if (ffmpegdec->picture->pict_type == FF_I_TYPE &&
|
||||
GST_CLOCK_TIME_IS_VALID (*in_ts) &&
|
||||
ffmpegdec->context->frame_rate > 0) {
|
||||
if ((ffmpegdec->picture->pict_type == FF_I_TYPE ||
|
||||
!GST_CLOCK_TIME_IS_VALID (ffmpegdec->next_ts)) &&
|
||||
GST_CLOCK_TIME_IS_VALID (*in_ts)) {
|
||||
ffmpegdec->next_ts = *in_ts;
|
||||
} else {
|
||||
}
|
||||
if (ffmpegdec->context->frame_rate_base != 0 &&
|
||||
ffmpegdec->context->frame_rate != 0) {
|
||||
ffmpegdec->next_ts += GST_SECOND *
|
||||
ffmpegdec->context->frame_rate_base /
|
||||
ffmpegdec->context->frame_rate;
|
||||
} else {
|
||||
ffmpegdec->next_ts = GST_CLOCK_TIME_NONE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue