Files
FFmpeg/libavcodec/version.h
T
YoungSoo Lee 406423ccf1 lavc/hevcdec: decode tiled pictures in CTB row order
Frame threading collapses on streams split into tile columns. Decoding
follows the tile scan, walking one column from top to bottom before moving on
to the next, so the lower CTB rows are published only once the last column is
done while the following frame is already waiting for them. Adding threads
does not help.

Walk the picture in row major order instead, finishing one CTB row across all
tile columns before moving on, which matches the order rows are published in
to the order they are awaited in. Every tile column keeps its own substream
state and the decoding operations are unchanged, so the output is bit-exact.

Decoding one CTB moves into decode_ctb(), which the serial path goes through
as well, so the two traversals share a single body.

This covers pictures whose tiles are bound together in a single slice by
entry points, where the substream positions come from the slice header. The
new path is selected by the tile_interleave option: the default of -1 takes
it only with frame threading, 0 disables it and 1 takes it without frame
threading too. Both require two or more tile columns and no entropy coding
synchronization.

Signed-off-by: YoungSoo Lee <youngsoo.lee@navercorp.com>
2026-11-05 18:20:52 +09:00

46 lines
1.6 KiB
C

/*
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* FFmpeg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef AVCODEC_VERSION_H
#define AVCODEC_VERSION_H
/**
* @file
* @ingroup libavc
* Libavcodec version macros.
*/
#include "libavutil/version.h"
#include "version_major.h"
#define LIBAVCODEC_VERSION_MINOR 26
#define LIBAVCODEC_VERSION_MICRO 101
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
LIBAVCODEC_VERSION_MINOR, \
LIBAVCODEC_VERSION_MICRO)
#define LIBAVCODEC_VERSION AV_VERSION(LIBAVCODEC_VERSION_MAJOR, \
LIBAVCODEC_VERSION_MINOR, \
LIBAVCODEC_VERSION_MICRO)
#define LIBAVCODEC_BUILD LIBAVCODEC_VERSION_INT
#define LIBAVCODEC_IDENT "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION)
#endif /* AVCODEC_VERSION_H */