mirror of
https://gitee.com/openharmony/multimedia_av_codec
synced 2024-10-07 22:23:44 +00:00
change video pts
Signed-off-by: y30025806 <yangjunhui10@huawei.com> Change-Id: I0149c2b72fefa8e0e75c63291c2aaf07d8fb9374
This commit is contained in:
parent
16e1ad3d87
commit
eed1e71645
@ -125,6 +125,7 @@ const char *OH_MD_KEY_DECODING_TIMESTAMP = "decoding_timestamp";
|
||||
const char *OH_MD_KEY_BUFFER_DURATION = "buffer_duration";
|
||||
const char *OH_MD_KEY_VIDEO_SAR = "video_sar";
|
||||
const char *OH_MD_KEY_START_TIME = "start_time";
|
||||
const char *OH_MD_KEY_TRACK_START_TIME = "track_start_time";
|
||||
const char *OH_MD_KEY_VIDEO_DECODER_OUTPUT_COLOR_SPACE = "video_decoder_output_colorspace";
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -626,6 +626,13 @@ extern const char *OH_MD_KEY_VIDEO_SAR;
|
||||
* @since 12
|
||||
*/
|
||||
extern const char *OH_MD_KEY_START_TIME;
|
||||
/**
|
||||
* @brief Key for start time of track, value type is int64_t.
|
||||
*
|
||||
* @syscap SystemCapability.Multimedia.Media.CodecBase
|
||||
* @since 12
|
||||
*/
|
||||
extern const char *OH_MD_KEY_TRACK_START_TIME;
|
||||
/**
|
||||
* @brief Key for setting the output color space of video decoder. The value type is int32_t.
|
||||
* The supported value is {@link OH_COLORSPACE_BT709_LIMIT}, see {@link OH_NativeBuffer_ColorSpace}. It is used in
|
||||
|
@ -838,19 +838,9 @@ void FFmpegDemuxerPlugin::ConvertPacketToAnnexb(std::shared_ptr<AVBuffer> sample
|
||||
|
||||
void FFmpegDemuxerPlugin::WriteBufferAttr(std::shared_ptr<AVBuffer> sample, std::shared_ptr<SamplePacket> samplePacket)
|
||||
{
|
||||
// pts
|
||||
int64_t pts = 0;
|
||||
AVStream *avStream = formatContext_->streams[samplePacket->pkts[0]->stream_index];
|
||||
if (avStream->start_time == AV_NOPTS_VALUE || ioContext_.dataSource->IsDash()) {
|
||||
avStream->start_time = 0;
|
||||
}
|
||||
if (avStream->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
|
||||
int64_t inputPts = ConvertPts(samplePacket->pkts[0]->pts, avStream->start_time);
|
||||
pts = AvTime2Us(ConvertTimeFromFFmpeg(inputPts, avStream->time_base));
|
||||
} else {
|
||||
pts = AvTime2Us(ConvertTimeFromFFmpeg(samplePacket->pkts[0]->pts, avStream->time_base));
|
||||
}
|
||||
if (samplePacket->pkts[0]->pts != AV_NOPTS_VALUE) {
|
||||
sample->pts_ = AvTime2Us(ConvertTimeFromFFmpeg(samplePacket->pkts[0]->pts, avStream->time_base));
|
||||
sample->absPts_ = AvTime2Us(ConvertTimeFromFFmpeg(samplePacket->pkts[0]->pts, avStream->time_base));
|
||||
}
|
||||
// durantion dts
|
||||
@ -864,7 +854,6 @@ void FFmpegDemuxerPlugin::WriteBufferAttr(std::shared_ptr<AVBuffer> sample, std:
|
||||
sample->dts_ = dts;
|
||||
sample->meta_->SetData(Media::Tag::BUFFER_DECODING_TIMESTAMP, dts);
|
||||
}
|
||||
sample->pts_ = pts;
|
||||
}
|
||||
|
||||
Status FFmpegDemuxerPlugin::ConvertAVPacketToSample(
|
||||
|
@ -437,8 +437,12 @@ void FFmpegFormatHelper::ParseAVTrackInfo(const AVStream& avStream, Meta &format
|
||||
} else {
|
||||
MEDIA_LOG_D("Parse track language info failed.");
|
||||
}
|
||||
format.SetData(Tag::MEDIA_START_TIME,
|
||||
ConvertTimeFromFFmpeg(avStream.start_time, avStream.time_base));
|
||||
if (avStream.start_time != AV_NOPTS_VALUE) {
|
||||
format.SetData(Tag::MEDIA_START_TIME,
|
||||
ConvertTimeFromFFmpeg(avStream.start_time, avStream.time_base));
|
||||
} else {
|
||||
MEDIA_LOG_D("Parse track start time info failed.");
|
||||
}
|
||||
}
|
||||
|
||||
void FFmpegFormatHelper::ParseVideoTrackInfo(const AVStream& avStream, Meta &format)
|
||||
|
Loading…
Reference in New Issue
Block a user