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;
|
ret = 0;
|
||||||
|
|
||||||
err_rate = (dp->dec.frames_decoded || dp->dec.decode_errors) ?
|
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) {
|
if (err_rate > max_error_rate) {
|
||||||
av_log(dp, AV_LOG_FATAL, "Decode error rate %g exceeds maximum %g\n",
|
av_log(dp, AV_LOG_FATAL, "Decode error rate %g exceeds maximum %g\n",
|
||||||
err_rate, max_error_rate);
|
err_rate, max_error_rate);
|
||||||
|
|
|
||||||
|
|
@ -450,7 +450,8 @@ static int add_candidate_ref(VVCContext *s, VVCFrameContext *fc, RefPicList *lis
|
||||||
|
|
||||||
if (!IS_CVSS(s)) {
|
if (!IS_CVSS(s)) {
|
||||||
const bool ref_corrupt = !ref || (ref->flags & VVC_FRAME_FLAG_CORRUPT);
|
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 (ref_corrupt && !recovering) {
|
||||||
if (!(s->avctx->flags & AV_CODEC_FLAG_OUTPUT_CORRUPT) &&
|
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;
|
x86_reg i=0;
|
||||||
|
|
||||||
av_assert2(FFABS(scale) < MAX_ABS);
|
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(
|
__asm__ volatile(
|
||||||
"pxor %%xmm2, %%xmm2 \n\t"
|
"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;
|
x86_reg i=0;
|
||||||
|
|
||||||
if (FFABS(scale) < 1024) {
|
if (FFABS(scale) < 1024) {
|
||||||
scale <<= 16 + SCALE_OFFSET - BASIS_SHIFT + RECON_SHIFT;
|
scale *= 1 << (16 + SCALE_OFFSET - BASIS_SHIFT + RECON_SHIFT);
|
||||||
__asm__ volatile(
|
__asm__ volatile(
|
||||||
"movd %3, %%xmm2 \n\t"
|
"movd %3, %%xmm2 \n\t"
|
||||||
"punpcklwd %%xmm2, %%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) {
|
if (mov->flags & FF_MOV_FLAG_HYBRID_FRAGMENTED) {
|
||||||
for (i = 0; i < track->entry; i++)
|
for (i = 0; i < track->entry; i++)
|
||||||
track->cluster[i].pos += ref_pos + track->data_offset;
|
track->cluster[i].pos += ref_pos + track->data_offset;
|
||||||
if (track->cluster_written == 0 && !(mov->flags & FF_MOV_FLAG_EMPTY_MOOV)) {
|
if (track->cluster_written == 0) {
|
||||||
// First flush. If this was a case of not using empty moov, reset chunking.
|
// 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++) {
|
for (i = 0; i < track->entry; i++) {
|
||||||
track->cluster[i].chunkNum = 0;
|
track->cluster[i].chunkNum = 0;
|
||||||
track->cluster[i].samples_in_chunk = track->cluster[i].entries;
|
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) ||
|
if (!(mov->flags & FF_MOV_FLAG_FRAGMENT) ||
|
||||||
mov->flags & FF_MOV_FLAG_HYBRID_FRAGMENTED) {
|
mov->flags & FF_MOV_FLAG_HYBRID_FRAGMENTED) {
|
||||||
if (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;
|
mov->mdat_size = avio_tell(pb) - mov->mdat_pos - 8;
|
||||||
for (i = 0; i < mov->nb_tracks; i++) {
|
for (i = 0; i < mov->nb_tracks; i++) {
|
||||||
MOVTrack *track = &mov->tracks[i];
|
MOVTrack *track = &mov->tracks[i];
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue