int avformat_seek_file(AVFormatContext *s, int stream_index, int64_t min_ts,
int64_t ts, int64_t max_ts, int flags)
{
if (min_ts > ts || max_ts < ts)
return -1;
if (stream_index < -1 || stream_index >= (int)s->nb_streams)
return AVERROR(EINVAL);
if (s->seek2any>0)
flags |= AVSEEK_FLAG_ANY;
flags &= ~AVSEEK_FLAG_BACKWARD;
...
}
其中有一句,
flags &= ~AVSEEK_FLAG_BACKWARD;
这句是啥意思? 字面分析应该是去掉了AVSEEK_FLAG_BACKWARD属性。
写个小程序验证一下:
#include "stdafx.h"
#include <iostream>
using namespace std;
#define AVSEEK_FLAG_BACKWARD 1 ///< seek backward
#define AVSEEK_FLAG_BYTE 2 ///< seeking based on position in bytes
#define AVSEEK_FLAG_ANY 4 ///< seek to any frame, even non-keyframes
#define AVSEEK_FLAG_FRAME 8 ///< seeking based on frame number
int _tmain(int argc, _TCHAR* argv[])
{
int flags = AVSEEK_FLAG_BYTE|AVSEEK_FLAG_BACKWARD;
cout<<"#1 flags:"<<flags<<endl;
flags &= ~AVSEEK_FLAG_BACKWARD; // remove AVSEEK_FLAG_BACKWARD
cout<<"#2 flags:"<<flags<<endl;
getchar();
return 0;
}
运行结果:
![](https://img.haomeiwen.com/i1720840/284a17091f6ada9f.png)
可见flags &= ~AVSEEK_FLAG_BACKWARD;确实实现了将flags中的AVSEEK_FLAG_BACKWARD属性去掉的功能。
网友评论