Fixed timebase of scheduled channel

This commit is contained in:
getroot
2025-03-06 02:36:38 +09:00
parent 1d10804697
commit 7d9b456566
3 changed files with 11 additions and 12 deletions

View File

@ -199,7 +199,7 @@ namespace pvd
track->SetMediaType(cmn::MediaType::Video);
// Set Timebase to 1/1000 fixed
track->SetTimeBase(1, 1000);
track->SetTimeBase(1, kScheduledVideoTimebase);
stream->AddTrack(track);
}
@ -213,9 +213,7 @@ namespace pvd
auto public_name = ov::String::FormatString("Audio_%d", track->GetId());
track->SetPublicName(public_name);
track->SetMediaType(cmn::MediaType::Audio);
// Set Timebase to 1/1000 fixed
track->SetTimeBase(1, 1000);
track->SetTimeBase(1, kScheduledAudioTimebase);
stream->AddTrack(track);
}
@ -235,9 +233,7 @@ namespace pvd
track->SetLanguage(audio_map_item.GetLanguage());
track->SetCharacteristics(audio_map_item.GetCharacteristics());
track->SetMediaType(cmn::MediaType::Audio);
// Set Timebase to 1/1000 fixed
track->SetTimeBase(1, 1000);
track->SetTimeBase(1, kScheduledAudioTimebase);
stream->AddTrack(track);
}

View File

@ -776,7 +776,7 @@ namespace pvd
auto old_track = GetTrack(audio_track_id);
new_track->SetId(audio_track_id);
new_track->SetTimeBase(1, new_track->GetSampleRate());
new_track->SetTimeBase(1, kScheduledAudioTimebase);
new_track->SetPublicName(old_track->GetPublicName());
new_track->SetLanguage(old_track->GetLanguage());
new_track->SetCharacteristics(old_track->GetCharacteristics());
@ -963,9 +963,11 @@ namespace pvd
auto duration = media_packet->GetDuration();
// origin timebase to track timebase
pts = ((pts * (double)origin_tb.GetNum()) / (double)origin_tb.GetDen()) * track->GetTimeBase().GetTimescale();
dts = ((dts * (double)origin_tb.GetNum()) / (double)origin_tb.GetDen()) * track->GetTimeBase().GetTimescale();
duration = ((duration * (double)origin_tb.GetNum()) / (double)origin_tb.GetDen()) * track->GetTimeBase().GetTimescale();
pts = (((double)pts * (double)origin_tb.GetNum()) / (double)origin_tb.GetDen()) * track->GetTimeBase().GetTimescale();
dts = (((double)dts * (double)origin_tb.GetNum()) / (double)origin_tb.GetDen()) * track->GetTimeBase().GetTimescale();
duration = static_cast<double>(duration) * (static_cast<double>(origin_tb.GetNum()) / static_cast<double>(origin_tb.GetDen()) * track->GetTimeBase().GetTimescale());
logtd("Scheduled Channel : %s/%s: Track %d, origin dts : %lld, pts %lld, dts %lld, duration %lld, tb %f", GetApplicationName(), GetName().CStr(), track_id, dts, pts, dts, duration, track->GetTimeBase().GetExpr());
if (track_first_packet_map.find(track_id) == track_first_packet_map.end())
{
@ -1175,7 +1177,7 @@ namespace pvd
auto old_track = GetTrack(audio_track_id);
new_track->SetId(audio_track_id);
new_track->SetTimeBase(1, new_track->GetSampleRate());
new_track->SetTimeBase(1, kScheduledAudioTimebase);
new_track->SetPublicName(old_track->GetPublicName());
new_track->SetLanguage(old_track->GetLanguage());
new_track->SetCharacteristics(old_track->GetCharacteristics());

View File

@ -23,6 +23,7 @@ namespace pvd
constexpr int kScheduledDataTrackId = 200;
constexpr int kScheduledVideoTimebase = 90000;
constexpr int kScheduledAudioTimebase = 90000;
class ScheduledStream : public Stream
{