mirror of https://github.com/FFmpeg/FFmpeg.git
Compare commits
5 Commits
dc39a576ad
...
535d4047d3
| Author | SHA1 | Date |
|---|---|---|
|
|
535d4047d3 | |
|
|
edf5b777c9 | |
|
|
05b8608c76 | |
|
|
e442128944 | |
|
|
27f5561885 |
|
|
@ -1007,7 +1007,7 @@ static int decoder_thread(void *arg)
|
|||
ret = 0;
|
||||
|
||||
err_rate = (dp->dec.frames_decoded || dp->dec.decode_errors) ?
|
||||
dp->dec.decode_errors / (dp->dec.frames_decoded + dp->dec.decode_errors) : 0.f;
|
||||
(float)dp->dec.decode_errors / (dp->dec.frames_decoded + dp->dec.decode_errors) : 0.f;
|
||||
if (err_rate > max_error_rate) {
|
||||
av_log(dp, AV_LOG_FATAL, "Decode error rate %g exceeds maximum %g\n",
|
||||
err_rate, max_error_rate);
|
||||
|
|
|
|||
|
|
@ -450,7 +450,8 @@ static int add_candidate_ref(VVCContext *s, VVCFrameContext *fc, RefPicList *lis
|
|||
|
||||
if (!IS_CVSS(s)) {
|
||||
const bool ref_corrupt = !ref || (ref->flags & VVC_FRAME_FLAG_CORRUPT);
|
||||
const bool recovering = s->no_output_before_recovery_flag && !GDR_IS_RECOVERED(s);
|
||||
const bool recovering = s->no_output_before_recovery_flag &&
|
||||
(IS_RASL(s) || !GDR_IS_RECOVERED(s));
|
||||
|
||||
if (ref_corrupt && !recovering) {
|
||||
if (!(s->avctx->flags & AV_CODEC_FLAG_OUTPUT_CORRUPT) &&
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ static int try_8x8basis_ssse3(const int16_t rem[64], const int16_t weight[64], c
|
|||
x86_reg i=0;
|
||||
|
||||
av_assert2(FFABS(scale) < MAX_ABS);
|
||||
scale <<= 16 + SCALE_OFFSET - BASIS_SHIFT + RECON_SHIFT;
|
||||
scale *= 1 << (16 + SCALE_OFFSET - BASIS_SHIFT + RECON_SHIFT);
|
||||
|
||||
__asm__ volatile(
|
||||
"pxor %%xmm2, %%xmm2 \n\t"
|
||||
|
|
@ -87,7 +87,7 @@ static void add_8x8basis_ssse3(int16_t rem[64], const int16_t basis[64], int sca
|
|||
x86_reg i=0;
|
||||
|
||||
if (FFABS(scale) < 1024) {
|
||||
scale <<= 16 + SCALE_OFFSET - BASIS_SHIFT + RECON_SHIFT;
|
||||
scale *= 1 << (16 + SCALE_OFFSET - BASIS_SHIFT + RECON_SHIFT);
|
||||
__asm__ volatile(
|
||||
"movd %3, %%xmm2 \n\t"
|
||||
"punpcklwd %%xmm2, %%xmm2 \n\t"
|
||||
|
|
|
|||
|
|
@ -6390,8 +6390,10 @@ static int mov_finish_fragment(MOVMuxContext *mov, MOVTrack *track,
|
|||
if (mov->flags & FF_MOV_FLAG_HYBRID_FRAGMENTED) {
|
||||
for (i = 0; i < track->entry; i++)
|
||||
track->cluster[i].pos += ref_pos + track->data_offset;
|
||||
if (track->cluster_written == 0 && !(mov->flags & FF_MOV_FLAG_EMPTY_MOOV)) {
|
||||
// First flush. If this was a case of not using empty moov, reset chunking.
|
||||
if (track->cluster_written == 0) {
|
||||
// First flush. Chunking for this fragment may already have been
|
||||
// done, either if we didn't use empty_moov, or if we did use
|
||||
// delay_moov. In either case, reset chunking here.
|
||||
for (i = 0; i < track->entry; i++) {
|
||||
track->cluster[i].chunkNum = 0;
|
||||
track->cluster[i].samples_in_chunk = track->cluster[i].entries;
|
||||
|
|
@ -8608,7 +8610,7 @@ static int mov_write_trailer(AVFormatContext *s)
|
|||
if (!(mov->flags & FF_MOV_FLAG_FRAGMENT) ||
|
||||
mov->flags & FF_MOV_FLAG_HYBRID_FRAGMENTED) {
|
||||
if (mov->flags & FF_MOV_FLAG_HYBRID_FRAGMENTED) {
|
||||
mov_flush_fragment(s, 1);
|
||||
mov_auto_flush_fragment(s, 1);
|
||||
mov->mdat_size = avio_tell(pb) - mov->mdat_pos - 8;
|
||||
for (i = 0; i < mov->nb_tracks; i++) {
|
||||
MOVTrack *track = &mov->tracks[i];
|
||||
|
|
|
|||
Loading…
Reference in New Issue