mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-26 19:01:44 +02:00
mpegts: remove unused/incomplete/broken seeking code
This commit is contained in:
parent
ae46fbee1d
commit
ae2bb52cd2
@ -19,8 +19,6 @@
|
|||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//#define USE_SYNCPOINT_SEARCH
|
|
||||||
|
|
||||||
#include "libavutil/crc.h"
|
#include "libavutil/crc.h"
|
||||||
#include "libavutil/intreadwrite.h"
|
#include "libavutil/intreadwrite.h"
|
||||||
#include "libavutil/log.h"
|
#include "libavutil/log.h"
|
||||||
@ -2093,92 +2091,6 @@ static int64_t mpegts_get_pcr(AVFormatContext *s, int stream_index,
|
|||||||
return timestamp;
|
return timestamp;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_SYNCPOINT_SEARCH
|
|
||||||
|
|
||||||
static int read_seek2(AVFormatContext *s,
|
|
||||||
int stream_index,
|
|
||||||
int64_t min_ts,
|
|
||||||
int64_t target_ts,
|
|
||||||
int64_t max_ts,
|
|
||||||
int flags)
|
|
||||||
{
|
|
||||||
int64_t pos;
|
|
||||||
|
|
||||||
int64_t ts_ret, ts_adj;
|
|
||||||
int stream_index_gen_search;
|
|
||||||
AVStream *st;
|
|
||||||
AVParserState *backup;
|
|
||||||
|
|
||||||
backup = ff_store_parser_state(s);
|
|
||||||
|
|
||||||
// detect direction of seeking for search purposes
|
|
||||||
flags |= (target_ts - min_ts > (uint64_t)(max_ts - target_ts)) ?
|
|
||||||
AVSEEK_FLAG_BACKWARD : 0;
|
|
||||||
|
|
||||||
if (flags & AVSEEK_FLAG_BYTE) {
|
|
||||||
// use position directly, we will search starting from it
|
|
||||||
pos = target_ts;
|
|
||||||
} else {
|
|
||||||
// search for some position with good timestamp match
|
|
||||||
if (stream_index < 0) {
|
|
||||||
stream_index_gen_search = av_find_default_stream_index(s);
|
|
||||||
if (stream_index_gen_search < 0) {
|
|
||||||
ff_restore_parser_state(s, backup);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
st = s->streams[stream_index_gen_search];
|
|
||||||
// timestamp for default must be expressed in AV_TIME_BASE units
|
|
||||||
ts_adj = av_rescale(target_ts,
|
|
||||||
st->time_base.den,
|
|
||||||
AV_TIME_BASE * (int64_t)st->time_base.num);
|
|
||||||
} else {
|
|
||||||
ts_adj = target_ts;
|
|
||||||
stream_index_gen_search = stream_index;
|
|
||||||
}
|
|
||||||
pos = ff_gen_search(s, stream_index_gen_search, ts_adj,
|
|
||||||
0, INT64_MAX, -1,
|
|
||||||
AV_NOPTS_VALUE,
|
|
||||||
AV_NOPTS_VALUE,
|
|
||||||
flags, &ts_ret, mpegts_get_pcr);
|
|
||||||
if (pos < 0) {
|
|
||||||
ff_restore_parser_state(s, backup);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// search for actual matching keyframe/starting position for all streams
|
|
||||||
if (ff_gen_syncpoint_search(s, stream_index, pos,
|
|
||||||
min_ts, target_ts, max_ts,
|
|
||||||
flags) < 0) {
|
|
||||||
ff_restore_parser_state(s, backup);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
ff_free_parser_state(s, backup);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int read_seek(AVFormatContext *s, int stream_index, int64_t target_ts, int flags)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
if (flags & AVSEEK_FLAG_BACKWARD) {
|
|
||||||
flags &= ~AVSEEK_FLAG_BACKWARD;
|
|
||||||
ret = read_seek2(s, stream_index, INT64_MIN, target_ts, target_ts, flags);
|
|
||||||
if (ret < 0)
|
|
||||||
// for compatibility reasons, seek to the best-fitting timestamp
|
|
||||||
ret = read_seek2(s, stream_index, INT64_MIN, target_ts, INT64_MAX, flags);
|
|
||||||
} else {
|
|
||||||
ret = read_seek2(s, stream_index, target_ts, target_ts, INT64_MAX, flags);
|
|
||||||
if (ret < 0)
|
|
||||||
// for compatibility reasons, seek to the best-fitting timestamp
|
|
||||||
ret = read_seek2(s, stream_index, INT64_MIN, target_ts, INT64_MAX, flags);
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
static int read_seek(AVFormatContext *s, int stream_index, int64_t target_ts, int flags){
|
static int read_seek(AVFormatContext *s, int stream_index, int64_t target_ts, int flags){
|
||||||
MpegTSContext *ts = s->priv_data;
|
MpegTSContext *ts = s->priv_data;
|
||||||
uint8_t buf[TS_PACKET_SIZE];
|
uint8_t buf[TS_PACKET_SIZE];
|
||||||
@ -2202,8 +2114,6 @@ static int read_seek(AVFormatContext *s, int stream_index, int64_t target_ts, in
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**************************************************************/
|
/**************************************************************/
|
||||||
/* parsing functions - called from other demuxers such as RTP */
|
/* parsing functions - called from other demuxers such as RTP */
|
||||||
|
|
||||||
@ -2268,9 +2178,6 @@ AVInputFormat ff_mpegts_demuxer = {
|
|||||||
.read_seek = read_seek,
|
.read_seek = read_seek,
|
||||||
.read_timestamp = mpegts_get_pcr,
|
.read_timestamp = mpegts_get_pcr,
|
||||||
.flags = AVFMT_SHOW_IDS | AVFMT_TS_DISCONT,
|
.flags = AVFMT_SHOW_IDS | AVFMT_TS_DISCONT,
|
||||||
#ifdef USE_SYNCPOINT_SEARCH
|
|
||||||
.read_seek2 = read_seek2,
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
AVInputFormat ff_mpegtsraw_demuxer = {
|
AVInputFormat ff_mpegtsraw_demuxer = {
|
||||||
@ -2283,8 +2190,5 @@ AVInputFormat ff_mpegtsraw_demuxer = {
|
|||||||
.read_seek = read_seek,
|
.read_seek = read_seek,
|
||||||
.read_timestamp = mpegts_get_pcr,
|
.read_timestamp = mpegts_get_pcr,
|
||||||
.flags = AVFMT_SHOW_IDS | AVFMT_TS_DISCONT,
|
.flags = AVFMT_SHOW_IDS | AVFMT_TS_DISCONT,
|
||||||
#ifdef USE_SYNCPOINT_SEARCH
|
|
||||||
.read_seek2 = read_seek2,
|
|
||||||
#endif
|
|
||||||
.priv_class = &mpegtsraw_class,
|
.priv_class = &mpegtsraw_class,
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user