tc_pack = dv_extract_pack(frame, dv_timecode);
if (!tc_pack)
return 0;
- av_timecode_make_smpte_tc_string(tc, AV_RB32(tc_pack + 1), prevent_df);
+ av_timecode_make_smpte_tc_string2(tc, av_inv_q(c->sys->time_base), AV_RB32(tc_pack + 1), prevent_df, 1);
return 1;
}
int64_t pos = avio_tell(s->pb);
// Read 3 DIF blocks: Header block and 2 Subcode blocks.
- int partial_frame_size = 3 * 80;
- uint8_t *partial_frame = av_mallocz(sizeof(*partial_frame) *
- partial_frame_size);
-
+#define PARTIAL_FRAME_SIZE (3 * 80)
+ uint8_t partial_frame[PARTIAL_FRAME_SIZE];
RawDVContext *c = s->priv_data;
- if (!partial_frame)
- return AVERROR(ENOMEM);
- ret = avio_read(s->pb, partial_frame, partial_frame_size);
+ ret = avio_read(s->pb, partial_frame, PARTIAL_FRAME_SIZE);
if (ret < 0)
goto finish;
- if (ret < partial_frame_size) {
+ if (ret < PARTIAL_FRAME_SIZE) {
ret = -1;
goto finish;
}
av_log(s, AV_LOG_ERROR, "Detected timecode is invalid\n");
finish:
- av_free(partial_frame);
avio_seek(s->pb, pos, SEEK_SET);
return ret;
}