Skip to content

Commit 7d10fa2

Browse files
committed
fix(encoder): re-add PTS calculation after processing for interpolators
Signed-off-by: k4yt3x <[email protected]>
1 parent 9d4b21b commit 7d10fa2

File tree

3 files changed

+6
-3
lines changed

3 files changed

+6
-3
lines changed

include/libvideo2x/encoder.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ class Encoder {
6363
int in_vstream_idx
6464
);
6565

66-
int write_frame(AVFrame* frame);
66+
int write_frame(AVFrame* frame, int64_t frame_idx);
6767
int flush();
6868

6969
AVCodecContext* get_encoder_context() const;

src/encoder.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,13 +267,16 @@ int Encoder::init(
267267
}
268268

269269
[[gnu::target_clones("arch=x86-64-v4", "arch=x86-64-v3", "default")]]
270-
int Encoder::write_frame(AVFrame* frame) {
270+
int Encoder::write_frame(AVFrame* frame, int64_t frame_idx) {
271271
AVFrame* converted_frame = nullptr;
272272
int ret;
273273

274274
// Let the encoder decide the frame type
275275
frame->pict_type = AV_PICTURE_TYPE_NONE;
276276

277+
// Calculate this frame's presentation timestamp (PTS)
278+
frame->pts = av_rescale_q(frame_idx, av_inv_q(enc_ctx_->framerate), enc_ctx_->time_base);
279+
277280
// Convert the frame to the encoder's pixel format if needed
278281
if (frame->format != enc_ctx_->pix_fmt) {
279282
converted_frame = conversions::convert_avframe_pix_fmt(frame, enc_ctx_->pix_fmt);

src/libvideo2x.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ int VideoProcessor::write_frame(AVFrame* frame, encoder::Encoder& encoder) {
314314
int ret = 0;
315315

316316
if (!benchmark_) {
317-
ret = encoder.write_frame(frame);
317+
ret = encoder.write_frame(frame, frame_idx_);
318318
if (ret < 0) {
319319
av_strerror(ret, errbuf, sizeof(errbuf));
320320
logger()->critical("Error encoding/writing frame: {}", errbuf);

0 commit comments

Comments
 (0)